[patch] remove .size directives from libc/sysdeps/linux/powerpc/crtn.S

Douglas Mencken dougmencken at gmail.com
Sun Mar 20 20:32:50 UTC 2011


GNU as used to accept (and ignore?) .size directives which referred to
undefined symbols. In binutils 2.21, these are treated as errors:

  AS lib/crti.o
  AS lib/crtn.o
initfini.c: Assembler messages:
initfini.c:23: Error: .size expression with symbol `_init' does not
evaluate to a constant
initfini.c:23: Error: .size expression with symbol `_fini' does not
evaluate to a constant
make: *** [lib/crtn.o] Error 1

So here's the patch:

--- evil/libc/sysdeps/linux/powerpc/crtn.S
+++ good/libc/sysdeps/linux/powerpc/crtn.S
@@ -9,7 +9,6 @@
        addi 1,1,32
        mtlr 0
	blr
-	.size   _init, .-_init

        .section .fini
        .align 2
@@ -20,4 +19,3 @@
        addi 1,1,32
        mtlr 0
	blr
-	.size   _fini, .-_fini

http://ftp.osuosl.org/pub/manulix/scripts/build-scripts/PPFILES/ppfiles-uclibc/powerpc-crtn.patch

After applying, the problem is gone:

$ make V=1
  AS lib/crti.o -DHAVE_ASM_PPC_REL16 -DHAVE_FORCED_UNWIND -DNDEBUG
-D__USE_STDIO_FUTEXES__ -D__ASSEMBLER__ -DUSE___THREAD
  AS lib/crtn.o -DHAVE_ASM_PPC_REL16 -DHAVE_FORCED_UNWIND -DNDEBUG
-D__USE_STDIO_FUTEXES__ -D__ASSEMBLER__ -DUSE___THREAD
  CC ldso/ldso/ldso.oS -DHAVE_ASM_PPC_REL16 -DHAVE_FORCED_UNWIND
-DNDEBUG -D__USE_STDIO_FUTEXES__ -DSHARED -DNOT_IN_libc -DIS_IN_rtld
-DUCLIBC_RUNTIME_PREFIX="/" -DUCLIBC_LDSO="ld-uClibc.so.0"
-DLDSO_ELFINTERP="powerpc/elfinterp.c" -DNOT_IN_libc -DIS_IN_rtld
-DUCLIBC_RUNTIME_PREFIX="/" -DUCLIBC_LDSO="ld-uClibc.so.0"
  AS ldso/ldso/powerpc/resolve.oS -DHAVE_ASM_PPC_REL16
-DHAVE_FORCED_UNWIND -DNDEBUG -D__USE_STDIO_FUTEXES__ -DSHARED
-DNOT_IN_libc -DIS_IN_rtld -DUCLIBC_RUNTIME_PREFIX="/"
-DUCLIBC_LDSO="ld-uClibc.so.0" -D__ASSEMBLER__ -DUSE___THREAD
  AR cr ldso/ldso/ld-uClibc_so.a
  STRIP -x -R .note -R .comment ldso/ldso/ld-uClibc_so.a
...


More information about the uClibc mailing list