From 2735d096aef2d039d711c13c311bb6dba979f437 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Wed, 17 Feb 2016 08:33:40 +0000 Subject: libnewt: Fix build with PIE flags security flags add -pie -fpie to CFLAGS which is not right options for compiling .so files, they are only useful for compiling executables Signed-off-by: Khem Raj --- meta/recipes-extended/newt/files/pie-flags.patch | 36 ++++++++++++++++++++++++ meta/recipes-extended/newt/libnewt_0.52.18.bb | 2 ++ 2 files changed, 38 insertions(+) create mode 100644 meta/recipes-extended/newt/files/pie-flags.patch (limited to 'meta/recipes-extended/newt') diff --git a/meta/recipes-extended/newt/files/pie-flags.patch b/meta/recipes-extended/newt/files/pie-flags.patch new file mode 100644 index 0000000000..8883e26adf --- /dev/null +++ b/meta/recipes-extended/newt/files/pie-flags.patch @@ -0,0 +1,36 @@ +specify -fPIC after CFLAGS so it can override the CFLAGS containing -pie and -fpie +this makes sure the objects that go into shared objects are compiled with -fPIC +and not with -fpie. We can not use -fpie on objects which will go into .so files +Fixes errors like + +| /mnt/oe/build/tmp-glibc/sysroots/x86_64-linux/usr/libexec/x86_64-oe-linux/gcc/x86_64-oe-linux/5.3.0/ld: shared/newt.o: relocation R_X86_64_PC32 against undefined symbol `SLtt_Screen_Rows@@SLANG2' can not be used when making a shared object; recompile with -fPIC +| /mnt/oe/build/tmp-glibc/sysroots/x86_64-linux/usr/libexec/x86_64-oe-linux/gcc/x86_64-oe-linux/5.3.0/ld: final link failed: Bad value +| collect2: error: ld returned 1 exit status +| make: *** [libnewt.so.0.52.18] Error 1 + +Signed-off-by: Khem Raj +Upstream-Status: Pending +Index: newt-0.52.18/Makefile.in +=================================================================== +--- newt-0.52.18.orig/Makefile.in ++++ newt-0.52.18/Makefile.in +@@ -96,8 +96,8 @@ _snack.$(SOEXT): snack.c $(LIBNEWTSH) + PIFLAGS=`$$pyconfig --includes`; \ + PLDFLAGS=`$$pyconfig --ldflags`; \ + PLFLAGS=`$$pyconfig --libs`; \ +- echo $(CC) $(SHCFLAGS) $(CPPFLAGS) $$PIFLAGS $$PCFLAGS -c -o $$ver/snack.o snack.c; \ +- $(CC) $(SHCFLAGS) $(CPPFLAGS) $$PIFLAGS $$PCFLAGS -c -o $$ver/snack.o snack.c; \ ++ echo $(CC) $(CPPFLAGS) $(SHCFLAGS) $$PIFLAGS $$PCFLAGS -c -o $$ver/snack.o snack.c; \ ++ $(CC) $(CPPFLAGS) $(SHCFLAGS) $$PIFLAGS $$PCFLAGS -c -o $$ver/snack.o snack.c; \ + echo $(CC) --shared $$PLDFLAGS $$PLFLAGS $(LDFLAGS) -o $$ver/_snack.$(SOEXT) $$ver/snack.o -L. -lnewt $(LIBS); \ + $(CC) --shared $$PLDFLAGS $$PLFLAGS $(LDFLAGS) -o $$ver/_snack.$(SOEXT) $$ver/snack.o -L. -lnewt $(LIBS); \ + done || : +@@ -135,7 +135,7 @@ $(LIBNEWTSH): $(SHAREDOBJS) + ln -fs $(LIBNEWTSH) $(LIBNEWTSONAME) + + $(SHAREDDIR)/%.o : %.c $(SHAREDDIR) +- $(CC) $(SHCFLAGS) -c $(CFLAGS) $(CPPFLAGS) -o $@ $< ++ $(CC) -c $(CFLAGS) $(CPPFLAGS) $(SHCFLAGS) -o $@ $< + + install: $(LIBNEWT) install-sh whiptail + [ -d $(instroot)/$(bindir) ] || install -m 755 -d $(instroot)/$(bindir) diff --git a/meta/recipes-extended/newt/libnewt_0.52.18.bb b/meta/recipes-extended/newt/libnewt_0.52.18.bb index 293c1a8a5a..9a2964be19 100644 --- a/meta/recipes-extended/newt/libnewt_0.52.18.bb +++ b/meta/recipes-extended/newt/libnewt_0.52.18.bb @@ -22,6 +22,7 @@ SRC_URI = "https://fedorahosted.org/releases/n/e/newt/newt-${PV}.tar.gz \ file://fix_SHAREDDIR.patch \ file://cross_ar.patch \ file://Makefile.in-Add-tinfo-library-to-the-linking-librari.patch \ + file://pie-flags.patch \ " SRC_URI[md5sum] = "685721bee1a318570704b19dcf31d268" @@ -37,6 +38,7 @@ CLEANBROKEN = "1" export STAGING_INCDIR export STAGING_LIBDIR +export CPPFLAGS export BUILD_SYS export HOST_SYS -- cgit 1.2.3-korg