From: Omar Sandoval <[email protected]> Currently, libcpu and libebl are always compiled as PIC. An upcoming change will add the objects from libcpu.a and libebl.a to libdw.a, which should not be PIC unless configured that way. So, make libcpu.a and libebl.a non-PIC and add libcpu_pic.a and libebl_pic.a.
Signed-off-by: Omar Sandoval <[email protected]> --- backends/ChangeLog | 1 + backends/Makefile.am | 2 +- libcpu/ChangeLog | 2 ++ libcpu/Makefile.am | 18 +++++++++++++----- libdw/ChangeLog | 4 ++++ libdw/Makefile.am | 2 +- libebl/ChangeLog | 4 +++- libebl/Makefile.am | 8 +++++++- 8 files changed, 32 insertions(+), 9 deletions(-) diff --git a/backends/ChangeLog b/backends/ChangeLog index 91790bb9..3faee13e 100644 --- a/backends/ChangeLog +++ b/backends/ChangeLog @@ -1,6 +1,7 @@ 2019-07-05 Omar Sandoval <[email protected]> * Makefile.am: Replace libcpu_{i386,x86_64,bpf}.a with libcpu.a. + Replace libcpu.a with libcpu_pic.a. 2019-07-13 Mao Han <[email protected]> diff --git a/backends/Makefile.am b/backends/Makefile.am index 6470a313..be470528 100644 --- a/backends/Makefile.am +++ b/backends/Makefile.am @@ -44,7 +44,7 @@ noinst_LIBRARIES = $(libebl_pic) noinst_DATA = $(libebl_pic:_pic.a=.so) -libcpu = ../libcpu/libcpu.a +libcpu = ../libcpu/libcpu_pic.a libelf = ../libelf/libelf.so libdw = ../libdw/libdw.so libeu = ../lib/libeu.a diff --git a/libcpu/ChangeLog b/libcpu/ChangeLog index c0ea72ec..883896a2 100644 --- a/libcpu/ChangeLog +++ b/libcpu/ChangeLog @@ -1,6 +1,8 @@ 2019-07-05 Omar Sandoval <[email protected]> * Makefile.am: Combine libcpu_{i386,x86_64,bpf}.a into libcpu.a. + Make libcpu.a non-PIC by default. + Add libcpu_pic.a. 2018-11-04 Mark Wielaard <[email protected]> diff --git a/libcpu/Makefile.am b/libcpu/Makefile.am index a7d9f6fd..88717361 100644 --- a/libcpu/Makefile.am +++ b/libcpu/Makefile.am @@ -30,15 +30,22 @@ include $(top_srcdir)/config/eu.am AM_CPPFLAGS += -I$(srcdir)/../libelf -I$(srcdir)/../libebl \ -I$(srcdir)/../libdw -I$(srcdir)/../libasm -AM_CFLAGS += $(fpic_CFLAGS) -fdollars-in-identifiers +if BUILD_STATIC +AM_CFLAGS += $(fpic_CFLAGS) +endif +AM_CFLAGS += -fdollars-in-identifiers LEXCOMPILE = $(LEX) $(LFLAGS) $(AM_LFLAGS) -P$(<F:lex.l=) LEX_OUTPUT_ROOT = lex.$(<F:lex.l=) AM_YFLAGS = -p$(<F:parse.y=) -noinst_LIBRARIES = libcpu.a +noinst_LIBRARIES = libcpu.a libcpu_pic.a + +noinst_HEADERS = i386_dis.h x86_64_dis.h + +libcpu_a_SOURCES = i386_disasm.c x86_64_disasm.c bpf_disasm.c -libcpu_a_SOURCES = i386_disasm.c i386_dis.h x86_64_disasm.c x86_64_dis.h \ - bpf_disasm.c +libcpu_pic_a_SOURCES = +am_libcpu_pic_a_OBJECTS = $(libcpu_a_SOURCES:.c=.os) i386_gendis_SOURCES = i386_gendis.c i386_lex.l i386_parse.y @@ -50,7 +57,7 @@ x86_64_disasm.o: x86_64.mnemonics $(srcdir)/x86_64_dis.h $(AM_V_at)mv -f $@T $@ if MAINTAINER_MODE -noinst_HEADERS = memory-access.h i386_parse.h i386_data.h +noinst_HEADERS += memory-access.h i386_parse.h i386_data.h noinst_PROGRAMS = i386_gendis$(EXEEXT) @@ -86,5 +93,6 @@ bpf_disasm_CFLAGS = -Wno-format-nonliteral EXTRA_DIST = defs/i386 +MOSTLYCLEANFILES = $(am_libcpu_pic_a_OBJECTS) CLEANFILES += $(foreach P,i386 x86_64,$P_defs $P.mnemonics) MAINTAINERCLEANFILES = $(foreach P,i386 x86_64, $P_dis.h) diff --git a/libdw/ChangeLog b/libdw/ChangeLog index 1d3586f0..a68778e6 100644 --- a/libdw/ChangeLog +++ b/libdw/ChangeLog @@ -1,3 +1,7 @@ +2019-07-05 Omar Sandoval <[email protected]> + + * Makefile.am (libdw_so_LIBS): Replace libebl.a with libebl_pic.a. + 2019-08-25 Jonathon Anderson <[email protected]> * dwarf_getcfi.c (dwarf_getcfi): Set default_same_value to false. diff --git a/libdw/Makefile.am b/libdw/Makefile.am index 7a3d5322..7dc4cec0 100644 --- a/libdw/Makefile.am +++ b/libdw/Makefile.am @@ -106,7 +106,7 @@ libdw_pic_a_SOURCES = am_libdw_pic_a_OBJECTS = $(libdw_a_SOURCES:.c=.os) libdw_so_LIBS = libdw_pic.a ../libdwelf/libdwelf_pic.a \ - ../libdwfl/libdwfl_pic.a ../libebl/libebl.a + ../libdwfl/libdwfl_pic.a ../libebl/libebl_pic.a libdw_so_DEPS = ../lib/libeu.a ../libelf/libelf.so libdw_so_LDLIBS = $(libdw_so_DEPS) -ldl -lz $(argp_LDADD) $(zip_LIBS) libdw_so_SOURCES = diff --git a/libebl/ChangeLog b/libebl/ChangeLog index a772ffa3..3a836c89 100644 --- a/libebl/ChangeLog +++ b/libebl/ChangeLog @@ -1,6 +1,8 @@ 2019-07-05 Omar Sandoval <[email protected]> - * Makefile.am (gen_SOURCES): Remove. + * Makefile.am: Make libebl.a non-PIC by default. + Add libebl_pic.a. + (gen_SOURCES): Remove. 2019-04-29 Mao Han <[email protected]> diff --git a/libebl/Makefile.am b/libebl/Makefile.am index ccc1a31a..b85ead01 100644 --- a/libebl/Makefile.am +++ b/libebl/Makefile.am @@ -28,12 +28,15 @@ ## not, see <http://www.gnu.org/licenses/>. ## include $(top_srcdir)/config/eu.am +if BUILD_STATIC AM_CFLAGS += $(fpic_CFLAGS) +endif AM_CPPFLAGS += -I$(srcdir)/../libelf -I$(srcdir)/../libdw -I$(srcdir)/../libasm VERSION = 1 LIBEBL_SUBDIR = @LIBEBL_SUBDIR@ lib_LIBRARIES = libebl.a +noinst_LIBRARIES = libebl_pic.a pkginclude_HEADERS = libebl.h @@ -57,6 +60,9 @@ libebl_a_SOURCES = eblopenbackend.c eblclosebackend.c eblreloctypename.c \ eblresolvesym.c eblcheckreloctargettype.c \ ebl_data_marker_symbol.c +libebl_pic_a_SOURCES = +am_libebl_pic_a_OBJECTS = $(libebl_a_SOURCES:.c=.os) + noinst_HEADERS = libeblP.h ebl-hooks.h -CLEANFILES += $(am_libebl_pic_a_OBJECTS) +MOSTLYCLEANFILES = $(am_libebl_pic_a_OBJECTS) -- 2.23.0
