a example show __label__ label usage

1. a global symbol whose name is the same as local label will not
   report error! Their difference is asmssembly label is controllable,
   it is where it is located but ({__here:(unsigned long)&&__here;}) may
   be not where it is located:
	.file	"_THIS_IP_.c"
	.section	.text.startup,"ax",%progbits
	.align	2
	.global	main
	.type	main, %function
main:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 0, uses_anonymous_args = 0
.L2:
.L3:
.L4:
.L5:
.L6:<---here is where __here is located!
	stmfd	sp!, {r3, lr}
@ 41 "_THIS_IP_.c" 1
	.globl __here;__here:<---where assembly __here is!
@ 0 "" 2
	ldr	r3, .L7
	ldr	r0, .L7+4
	ldr	r1, [r3, #0]
	bl	printf
	ldr	r2, .L7+8
	ldr	r1, .L7+12
	ldr	r0, .L7+16
	bl	printf
	ldr	r1, .L7+20
	ldr	r0, .L7+24
	bl	printf
	ldr	r1, .L7+28
	ldr	r0, .L7+32
	bl	printf
	ldr	r1, .L7+36
	ldr	r0, .L7+40
	bl	printf
	mov	r0, #0
	ldmfd	sp!, {r3, pc}
.L8:
	.align	2
.L7:
	.word	__here
	.word	.LC0
	.word	.L3
	.word	.L2
	.word	.LC1
	.word	.L4
	.word	.LC4
	.word	.L5
	.word	.LC6
	.word	.L6
	.word	.LC8
	.size	main, .-main
	.section	.rodata.str1.1,"aMS",%progbits,1
.LC0:
	.ascii	"global symbol __here:%lx\012\000"
.LC1:
	.ascii	"_THIS_IP_ %p, %p\012\000"
.LC4:
	.ascii	"1st local label:%lx\012\000"
.LC6:
	.ascii	"really 1st local label __here:%lx\012\000"
.LC8:
	.ascii	"really 2nd local label __here:%lx\012\000"
	.ident	"GCC: (Buildroot 2013.05) 4.7.3"
	.section	.note.GNU-stack,"",%progbits

2. extern unsigned long __here;
   extern unsigned long __here[];
   the printf of __here will be different! The 1st is the variable
   residing at label __here; the second is address of label __here.
Merge branch 'master' of https://github.com/rednoax/preparation