OSDN Git Service

Remove no-op sed step when compiling crtbrand.o
authorColin Cross <ccross@android.com>
Thu, 12 Feb 2015 01:40:45 +0000 (17:40 -0800)
committerColin Cross <ccross@android.com>
Thu, 12 Feb 2015 01:40:45 +0000 (17:40 -0800)
crtbrand.c was compiled to a .s file, run through a sed script
to translate a %progbits to %note, and the compiled to .o.
However, when the sed command was copied from the original source
it was not updated to use the new name of the section (.note.ABI-tag
to .note.android.ident), so it didn't modify the file.  Since the
section has been generated with type %progbits instead of %note for
two years, just delete the whole sed step.

Change-Id: Id78582e9b43b628afec4eed22a088283132f0742

libc/bionic/crtbrand.c
libc/crt.mk

index 31fcbc7..a726c51 100644 (file)
 
 /*
  * Special ".note" entry to tag an Android binary and specify the ABI version.
- *
- * For all arches except sparc, gcc emits the section directive for the
- * following struct with a PROGBITS type.  However, the section should be
- * of NOTE type, according to the Generic SysV ABI spec.
- *
- * Unfortunately, there is no clean way to tell gcc to use another section type,
- * so this C file (or the C file that includes it) must be compiled in multiple
- * steps:
- *
- * - Compile the .c file to a .s file.
- * - Edit the .s file to change the 'progbits' type to 'note', for the section
- *   directive that defines the .note.ABI-tag section.
- * - Compile the .s file to an object file.
- *
- * These steps are done in the invididual Makefiles for each applicable arch.
  */
 static const struct {
     int32_t    namesz;
index c3ba54b..410f229 100644 (file)
@@ -32,26 +32,14 @@ my_libc_crt_target_so_cflags := \
 my_libc_crt_target_ldflags := $(libc_crt_target_ldflags_$(my_arch))
 
 
-# See the comment in crtbrand.c for the reason why we need to generate
-# crtbrand.s before generating crtbrand.o.
-GEN := $($(my_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbrand.s
-$(GEN): PRIVATE_CC := $($(my_2nd_arch_prefix)TARGET_CC)
-$(GEN): PRIVATE_CFLAGS := $(my_libc_crt_target_so_cflags)
-$(GEN): $(LOCAL_PATH)/bionic/crtbrand.c
-       @mkdir -p $(dir $@)
-       $(hide) $(PRIVATE_CC) $(PRIVATE_CFLAGS) -S \
-               -MD -MF $(@:%.s=%.d) -o $@ $<
-       $(hide) sed -i -e '/\.note\.ABI-tag/s/progbits/note/' $@
-       $(call transform-d-to-p-args,$(@:%.s=%.d),$(@:%.s=%.P))
--include $(GEN:%.s=%.P)
-
-
 GEN := $($(my_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbrand.o
 $(GEN): PRIVATE_CC := $($(my_2nd_arch_prefix)TARGET_CC)
 $(GEN): PRIVATE_CFLAGS := $(my_libc_crt_target_so_cflags)
-$(GEN): $($(my_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbrand.s
-       @mkdir -p $(dir $@)
-       $(hide) $(PRIVATE_CC) $(PRIVATE_CFLAGS) -o $@ -c $<
+$(GEN): $(LOCAL_PATH)/bionic/crtbrand.c
+       $(hide) $(PRIVATE_CC) $(PRIVATE_CFLAGS) \
+               -MD -MF $(@:%.o=%.d) -o $@ -c $<
+       $(transform-d-to-p)
+-include $(GEN:%.o=%.P)
 
 
 GEN := $($(my_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_so.o