* [PATCH 0/7] Enable building libelf of elfutils on win32 @ 2022-09-20 8:43 Yonggang Luo 2022-09-20 8:43 ` [PATCH 1/7] Rename 'hello2.spec.' -> 'hello2.spec' 'hello3.spec.' -> 'hello3.spec' Yonggang Luo ` (6 more replies) 0 siblings, 7 replies; 26+ messages in thread From: Yonggang Luo @ 2022-09-20 8:43 UTC (permalink / raw) To: elfutils-devel; +Cc: Yonggang Luo After these changes, now libelf can be build with mingw/gcc and msvc/clang Yonggang Luo (7): Rename 'hello2.spec.' -> 'hello2.spec' 'hello3.spec.' -> 'hello3.spec' move platform depended include into system.h lib: Use NOT_HAVE_LIBINTL to guard if need #include <libintl.h> Remove duplicated #include <libintl.h> Strip __ prefix from __BYTE_ORDER __LITTLE_ENDIAN and __BIG_ENDIAN Fixes building with msvc/clang mingw/gcc Add CMake build files .gitignore | 1 + CMakeLists.txt | 47 +++++ configure.ac | 1 + debuginfod/debuginfod.cxx | 1 - lib/color.c | 1 - lib/eu-config.h | 8 + lib/printversion.c | 1 - lib/system.h | 74 ++++++- lib/system_win32.c | 162 +++++++++++++++ lib/xasprintf.c | 1 - lib/xmalloc.c | 1 - libasm/asm_end.c | 1 - libasm/asm_error.c | 1 - libasm/asm_newscn.c | 1 - libcpu/i386_disasm.c | 2 +- libcpu/i386_lex.l | 1 - libcpu/i386_parse.y | 1 - libcpu/memory-access.h | 26 +-- libcpu/riscv_disasm.c | 2 +- libdw/libdwP.h | 1 - libdw/memory-access.h | 8 +- libdwfl/argp-std.c | 1 - libdwfl/dwfl_error.c | 1 - libdwfl/dwfl_segment_report_module.c | 2 +- libebl/eblmachineflagname.c | 1 - libebl/eblobjnotetypename.c | 2 - libebl/eblopenbackend.c | 1 - libebl/libeblP.h | 1 - libelf/CMakeLists.txt | 192 ++++++++++++++++++ libelf/common.h | 5 +- libelf/config-cmake/config.h | 27 +++ libelf/elf32_checksum.c | 5 +- libelf/elf32_getphdr.c | 2 - libelf/elf32_getshdr.c | 2 - libelf/elf32_updatefile.c | 6 +- libelf/elf32_updatenull.c | 2 - libelf/elf32_xlatetof.c | 5 +- libelf/elf32_xlatetom.c | 1 - libelf/elf_begin.c | 10 +- libelf/elf_cntl.c | 2 - libelf/elf_compress.c | 2 - libelf/elf_end.c | 3 +- libelf/elf_error.c | 1 - libelf/elf_getarsym.c | 10 +- libelf/elf_getdata.c | 2 - libelf/elf_getdata_rawchunk.c | 2 - libelf/elf_getshdrstrndx.c | 2 - libelf/elf_readall.c | 2 - libelf/elf_update.c | 7 +- libelf/gelf_xlate.c | 1 - libelf/libelf.h | 6 + libelf/libelfP.h | 5 + libelf/nlist.c | 1 - lib/xasprintf.c => libelf/win32/ar.h | 104 +++++----- src/addr2line.c | 1 - src/ar.c | 1 - src/arlib-argp.c | 1 - src/arlib.c | 1 - src/arlib.h | 2 +- src/arlib2.c | 1 - src/elfcmp.c | 1 - src/elflint.c | 1 - src/findtextrel.c | 1 - src/nm.c | 1 - src/objdump.c | 1 - src/ranlib.c | 1 - src/readelf.c | 1 - src/size.c | 1 - src/strings.c | 1 - src/strip.c | 1 - src/unstrip.c | 1 - tests/Makefile.am | 2 +- .../{hello2.spec. => hello2.spec} | 0 .../{hello3.spec. => hello3.spec} | 0 74 files changed, 612 insertions(+), 166 deletions(-) create mode 100644 CMakeLists.txt create mode 100644 lib/system_win32.c create mode 100644 libelf/CMakeLists.txt create mode 100644 libelf/config-cmake/config.h copy lib/xasprintf.c => libelf/win32/ar.h (66%) rename tests/debuginfod-rpms/{hello2.spec. => hello2.spec} (100%) rename tests/debuginfod-rpms/{hello3.spec. => hello3.spec} (100%) -- 2.36.1.windows.1 ^ permalink raw reply [flat|nested] 26+ messages in thread
* [PATCH 1/7] Rename 'hello2.spec.' -> 'hello2.spec' 'hello3.spec.' -> 'hello3.spec' 2022-09-20 8:43 [PATCH 0/7] Enable building libelf of elfutils on win32 Yonggang Luo @ 2022-09-20 8:43 ` Yonggang Luo 2022-10-14 20:35 ` Mark Wielaard 2022-09-20 8:43 ` [PATCH 2/7] move platform depended include into system.h Yonggang Luo ` (5 subsequent siblings) 6 siblings, 1 reply; 26+ messages in thread From: Yonggang Luo @ 2022-09-20 8:43 UTC (permalink / raw) To: elfutils-devel; +Cc: Yonggang Luo These filenames are invalid on win32 Signed-off-by: Yonggang Luo <luoyonggang@gmail.com> --- tests/Makefile.am | 2 +- tests/debuginfod-rpms/{hello2.spec. => hello2.spec} | 0 tests/debuginfod-rpms/{hello3.spec. => hello3.spec} | 0 3 files changed, 1 insertion(+), 1 deletion(-) rename tests/debuginfod-rpms/{hello2.spec. => hello2.spec} (100%) rename tests/debuginfod-rpms/{hello3.spec. => hello3.spec} (100%) diff --git a/tests/Makefile.am b/tests/Makefile.am index 85514898..fc2235f4 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -563,7 +563,7 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \ debuginfod-rpms/fedora31/hello3-debugsource-1.0-2.x86_64.rpm \ debuginfod-rpms/fedora31/hello3-two-1.0-2.x86_64.rpm \ debuginfod-rpms/fedora31/hello3-two-debuginfo-1.0-2.x86_64.rpm \ - debuginfod-rpms/hello2.spec. \ + debuginfod-rpms/hello2.spec \ debuginfod-rpms/rhel6/hello2-1.0-2.i686.rpm \ debuginfod-rpms/rhel6/hello2-1.0-2.src.rpm \ debuginfod-rpms/rhel6/hello2-debuginfo-1.0-2.i686.rpm \ diff --git a/tests/debuginfod-rpms/hello2.spec. b/tests/debuginfod-rpms/hello2.spec similarity index 100% rename from tests/debuginfod-rpms/hello2.spec. rename to tests/debuginfod-rpms/hello2.spec diff --git a/tests/debuginfod-rpms/hello3.spec. b/tests/debuginfod-rpms/hello3.spec similarity index 100% rename from tests/debuginfod-rpms/hello3.spec. rename to tests/debuginfod-rpms/hello3.spec -- 2.36.1.windows.1 ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH 1/7] Rename 'hello2.spec.' -> 'hello2.spec' 'hello3.spec.' -> 'hello3.spec' 2022-09-20 8:43 ` [PATCH 1/7] Rename 'hello2.spec.' -> 'hello2.spec' 'hello3.spec.' -> 'hello3.spec' Yonggang Luo @ 2022-10-14 20:35 ` Mark Wielaard 2022-10-19 18:45 ` 罗勇刚(Yonggang Luo) 0 siblings, 1 reply; 26+ messages in thread From: Mark Wielaard @ 2022-10-14 20:35 UTC (permalink / raw) To: Yonggang Luo; +Cc: elfutils-devel Hi, On Tue, Sep 20, 2022 at 04:43:01PM +0800, Yonggang Luo via Elfutils-devel wrote: > These filenames are invalid on win32 This looks ok to me, but I don't really know why these files were named this way in the first place. The files themselves are not directly used, they are there to recreate the hello3*rpm test files. Frank, would you mind if these are just renamed to normal *.spec? Thanks, Mark > Signed-off-by: Yonggang Luo <luoyonggang@gmail.com> > --- > tests/Makefile.am | 2 +- > tests/debuginfod-rpms/{hello2.spec. => hello2.spec} | 0 > tests/debuginfod-rpms/{hello3.spec. => hello3.spec} | 0 > 3 files changed, 1 insertion(+), 1 deletion(-) > rename tests/debuginfod-rpms/{hello2.spec. => hello2.spec} (100%) > rename tests/debuginfod-rpms/{hello3.spec. => hello3.spec} (100%) > > diff --git a/tests/Makefile.am b/tests/Makefile.am > index 85514898..fc2235f4 100644 > --- a/tests/Makefile.am > +++ b/tests/Makefile.am > @@ -563,7 +563,7 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \ > debuginfod-rpms/fedora31/hello3-debugsource-1.0-2.x86_64.rpm \ > debuginfod-rpms/fedora31/hello3-two-1.0-2.x86_64.rpm \ > debuginfod-rpms/fedora31/hello3-two-debuginfo-1.0-2.x86_64.rpm \ > - debuginfod-rpms/hello2.spec. \ > + debuginfod-rpms/hello2.spec \ > debuginfod-rpms/rhel6/hello2-1.0-2.i686.rpm \ > debuginfod-rpms/rhel6/hello2-1.0-2.src.rpm \ > debuginfod-rpms/rhel6/hello2-debuginfo-1.0-2.i686.rpm \ > diff --git a/tests/debuginfod-rpms/hello2.spec. b/tests/debuginfod-rpms/hello2.spec > similarity index 100% > rename from tests/debuginfod-rpms/hello2.spec. > rename to tests/debuginfod-rpms/hello2.spec > diff --git a/tests/debuginfod-rpms/hello3.spec. b/tests/debuginfod-rpms/hello3.spec > similarity index 100% > rename from tests/debuginfod-rpms/hello3.spec. > rename to tests/debuginfod-rpms/hello3.spec > -- > 2.36.1.windows.1 > ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH 1/7] Rename 'hello2.spec.' -> 'hello2.spec' 'hello3.spec.' -> 'hello3.spec' 2022-10-14 20:35 ` Mark Wielaard @ 2022-10-19 18:45 ` 罗勇刚(Yonggang Luo) 2022-10-19 19:49 ` Frank Ch. Eigler 0 siblings, 1 reply; 26+ messages in thread From: 罗勇刚(Yonggang Luo) @ 2022-10-19 18:45 UTC (permalink / raw) To: Mark Wielaard; +Cc: elfutils-devel [-- Attachment #1: Type: text/plain, Size: 2382 bytes --] I really want this to be merged :) ping Frank, as this would stop me clone elfutils on windows On Sat, Oct 15, 2022 at 4:35 AM Mark Wielaard <mark@klomp.org> wrote: > > Hi, > > On Tue, Sep 20, 2022 at 04:43:01PM +0800, Yonggang Luo via Elfutils-devel wrote: > > These filenames are invalid on win32 > > This looks ok to me, but I don't really know why these files were > named this way in the first place. > > The files themselves are not directly used, they are there to recreate > the hello3*rpm test files. > > Frank, would you mind if these are just renamed to normal *.spec? > > Thanks, > > Mark > > > Signed-off-by: Yonggang Luo <luoyonggang@gmail.com> > > --- > > tests/Makefile.am | 2 +- > > tests/debuginfod-rpms/{hello2.spec. => hello2.spec} | 0 > > tests/debuginfod-rpms/{hello3.spec. => hello3.spec} | 0 > > 3 files changed, 1 insertion(+), 1 deletion(-) > > rename tests/debuginfod-rpms/{hello2.spec. => hello2.spec} (100%) > > rename tests/debuginfod-rpms/{hello3.spec. => hello3.spec} (100%) > > > > diff --git a/tests/Makefile.am b/tests/Makefile.am > > index 85514898..fc2235f4 100644 > > --- a/tests/Makefile.am > > +++ b/tests/Makefile.am > > @@ -563,7 +563,7 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \ > > debuginfod-rpms/fedora31/hello3-debugsource-1.0-2.x86_64.rpm \ > > debuginfod-rpms/fedora31/hello3-two-1.0-2.x86_64.rpm \ > > debuginfod-rpms/fedora31/hello3-two-debuginfo-1.0-2.x86_64.rpm \ > > - debuginfod-rpms/hello2.spec. \ > > + debuginfod-rpms/hello2.spec \ > > debuginfod-rpms/rhel6/hello2-1.0-2.i686.rpm \ > > debuginfod-rpms/rhel6/hello2-1.0-2.src.rpm \ > > debuginfod-rpms/rhel6/hello2-debuginfo-1.0-2.i686.rpm \ > > diff --git a/tests/debuginfod-rpms/hello2.spec. b/tests/debuginfod-rpms/hello2.spec > > similarity index 100% > > rename from tests/debuginfod-rpms/hello2.spec. > > rename to tests/debuginfod-rpms/hello2.spec > > diff --git a/tests/debuginfod-rpms/hello3.spec. b/tests/debuginfod-rpms/hello3.spec > > similarity index 100% > > rename from tests/debuginfod-rpms/hello3.spec. > > rename to tests/debuginfod-rpms/hello3.spec > > -- > > 2.36.1.windows.1 > > -- 此致 礼 罗勇刚 Yours sincerely, Yonggang Luo ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH 1/7] Rename 'hello2.spec.' -> 'hello2.spec' 'hello3.spec.' -> 'hello3.spec' 2022-10-19 18:45 ` 罗勇刚(Yonggang Luo) @ 2022-10-19 19:49 ` Frank Ch. Eigler 2022-10-19 21:23 ` 罗勇刚(Yonggang Luo) ` (2 more replies) 0 siblings, 3 replies; 26+ messages in thread From: Frank Ch. Eigler @ 2022-10-19 19:49 UTC (permalink / raw) To: luoyonggang; +Cc: Mark Wielaard, elfutils-devel Hi - > I really want this to be merged :) ping Frank, > as this would stop me clone elfutils on windows If it doesn't break "make rpm" (or at least rpm -ts elfutils*.tar.bz2), it's fine. But I don't understand the problem - my windows machines have no problem with files named "hello2.spec2." with two periods. - FChE ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH 1/7] Rename 'hello2.spec.' -> 'hello2.spec' 'hello3.spec.' -> 'hello3.spec' 2022-10-19 19:49 ` Frank Ch. Eigler @ 2022-10-19 21:23 ` 罗勇刚(Yonggang Luo) 2022-10-19 21:27 ` 罗勇刚(Yonggang Luo) 2022-10-20 16:07 ` Mark Wielaard 2 siblings, 0 replies; 26+ messages in thread From: 罗勇刚(Yonggang Luo) @ 2022-10-19 21:23 UTC (permalink / raw) To: Frank Ch. Eigler; +Cc: Mark Wielaard, elfutils-devel [-- Attachment #1: Type: text/plain, Size: 579 bytes --] On Thu, Oct 20, 2022 at 3:49 AM Frank Ch. Eigler <fche@redhat.com> wrote: > > Hi - > > > I really want this to be merged :) ping Frank, > > as this would stop me clone elfutils on windows > > If it doesn't break "make rpm" (or at least rpm -ts elfutils*.tar.bz2), > it's fine. But I don't understand the problem - my windows machines have > no problem with files named "hello2.spec2." with two periods. > Hi, Frank, `git clone` can not checkout the file, I didn't know why > - FChE > -- 此致 礼 罗勇刚 Yours sincerely, Yonggang Luo ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH 1/7] Rename 'hello2.spec.' -> 'hello2.spec' 'hello3.spec.' -> 'hello3.spec' 2022-10-19 19:49 ` Frank Ch. Eigler 2022-10-19 21:23 ` 罗勇刚(Yonggang Luo) @ 2022-10-19 21:27 ` 罗勇刚(Yonggang Luo) 2022-10-21 15:45 ` Frank Ch. Eigler 2022-10-20 16:07 ` Mark Wielaard 2 siblings, 1 reply; 26+ messages in thread From: 罗勇刚(Yonggang Luo) @ 2022-10-19 21:27 UTC (permalink / raw) To: Frank Ch. Eigler; +Cc: Mark Wielaard, elfutils-devel [-- Attachment #1: Type: text/plain, Size: 653 bytes --] > If it doesn't break "make rpm" (or at least rpm -ts elfutils*.tar.bz2), > it's fine. But I don't understand the problem - my windows machines have > no problem with files named "hello2.spec2." with two periods. > > - FChE This is the error log: ``` C:\Users\lygstate>cd /d C:\work\xemu\elfutils C:\work\xemu\elfutils>git reset --hard 4cc429d2761846967678fb8cf5868d311d1f7862 error: invalid path 'tests/debuginfod-rpms/hello2.spec.' fatal: Could not reset index file to revision '4cc429d2761846967678fb8cf5868d311d1f7862'. C:\work\xemu\elfutils> ``` -- 此致 礼 罗勇刚 Yours sincerely, Yonggang Luo ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH 1/7] Rename 'hello2.spec.' -> 'hello2.spec' 'hello3.spec.' -> 'hello3.spec' 2022-10-19 21:27 ` 罗勇刚(Yonggang Luo) @ 2022-10-21 15:45 ` Frank Ch. Eigler 0 siblings, 0 replies; 26+ messages in thread From: Frank Ch. Eigler @ 2022-10-21 15:45 UTC (permalink / raw) To: 罗勇刚(Yonggang Luo); +Cc: Mark Wielaard, elfutils-devel Hi - > C:\work\xemu\elfutils>git reset --hard > 4cc429d2761846967678fb8cf5868d311d1f7862 > error: invalid path 'tests/debuginfod-rpms/hello2.spec.' > fatal: Could not reset index file to revision > '4cc429d2761846967678fb8cf5868d311d1f7862'. Sounds like a git-induced problem. Maybe try a different git client? - FChE ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH 1/7] Rename 'hello2.spec.' -> 'hello2.spec' 'hello3.spec.' -> 'hello3.spec' 2022-10-19 19:49 ` Frank Ch. Eigler 2022-10-19 21:23 ` 罗勇刚(Yonggang Luo) 2022-10-19 21:27 ` 罗勇刚(Yonggang Luo) @ 2022-10-20 16:07 ` Mark Wielaard 2022-10-31 13:29 ` Mark Wielaard 2 siblings, 1 reply; 26+ messages in thread From: Mark Wielaard @ 2022-10-20 16:07 UTC (permalink / raw) To: Frank Ch. Eigler, luoyonggang; +Cc: elfutils-devel [-- Attachment #1: Type: text/plain, Size: 1059 bytes --] Hi, On Wed, 2022-10-19 at 15:49 -0400, Frank Ch. Eigler via Elfutils-devel wrote: > I really want this to be merged :) ping Frank, > > as this would stop me clone elfutils on windows > > If it doesn't break "make rpm" (or at least rpm -ts > elfutils*.tar.bz2), > it's fine. make rpm doesn't work because of: rpmbuild -ts --sign elfutils-0.187.tar.bz2 error: rpmbuild --sign is no longer supported. Use the rpmsign command instead! make: *** [Makefile:971: rpm] Error 1 Maybe just remove the --sign? But then, with the rename, you'll get: rpmbuild -ts elfutils-0.187.tar.bz2 error: Found more than one spec file in elfutils-0.187.tar.bz2 make: *** [Makefile:971: rpm] Error 1 So maybe we just should rename them to .specfile? That is what the attached patch does, plus some other cleanups. - We forgot to include the hello3.specfile - Remove the --sign from rpmbuild - escape the % in spec comments That makes make rpm work out of the box without warnings. Does it also help the windows git thing? Cheers, Mark [-- Attachment #2: 0001-Rename-hello-2-3-.spec.-hello-2-3-.specfile.patch --] [-- Type: text/x-patch, Size: 4710 bytes --] From f7bd331326a03108095b7593bb48d7482690501f Mon Sep 17 00:00:00 2001 From: Yonggang Luo <luoyonggang@gmail.com> Date: Tue, 20 Sep 2022 16:43:01 +0800 Subject: [PATCH] Rename 'hello{2,3}.spec.' -> 'hello{2,3}.specfile' These filenames are invalid on win32. We don't want to include multiple .spec files for make rpm. rpmbuild --sign is not supported anymore. Also include hello3.specfile in EXTRA_DIST. Escape some macros in the elfutils.spec.in file comments. Signed-off-by: Yonggang Luo <luoyonggang@gmail.com> Signed-off-by: Mark Wielaard <mark@klomp.org> --- ChangeLog | 4 ++++ Makefile.am | 2 +- config/ChangeLog | 4 ++++ config/elfutils.spec.in | 6 +++--- tests/ChangeLog | 9 +++++++++ tests/Makefile.am | 3 ++- tests/debuginfod-rpms/{hello2.spec. => hello2.specfile} | 0 tests/debuginfod-rpms/{hello3.spec. => hello3.specfile} | 0 8 files changed, 23 insertions(+), 5 deletions(-) rename tests/debuginfod-rpms/{hello2.spec. => hello2.specfile} (100%) rename tests/debuginfod-rpms/{hello3.spec. => hello3.specfile} (100%) diff --git a/ChangeLog b/ChangeLog index 60624183..2bf99c71 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2022-10-20 Mark Wielaard <mark@klomp.org> + + * Makefile.am (rpm): Remove --sign. + 2022-09-13 Aleksei Vetrov <vvvvvv@google.com> * NEWS (libdwfl): Add dwfl_report_offline_memory. diff --git a/Makefile.am b/Makefile.am index 8643312a..e92e05c2 100644 --- a/Makefile.am +++ b/Makefile.am @@ -44,7 +44,7 @@ distcheck-hook: chmod -R u+w $(distdir) rpm: dist - rpmbuild -ts --sign elfutils-@PACKAGE_VERSION@.tar.bz2 + rpmbuild -ts elfutils-@PACKAGE_VERSION@.tar.bz2 if GCOV diff --git a/config/ChangeLog b/config/ChangeLog index 1265f399..4c7164e5 100644 --- a/config/ChangeLog +++ b/config/ChangeLog @@ -1,3 +1,7 @@ +2022-10-20 Mark Wielaard <mark@klomp.org> + + * elfutils.spec.in: Escape % in comments. + 2022-08-17 Martin Liska <mliska@suse.cz> * debuginfod.service: Add new debuginfod.sysconfig diff --git a/config/elfutils.spec.in b/config/elfutils.spec.in index 54599159..3282de26 100644 --- a/config/elfutils.spec.in +++ b/config/elfutils.spec.in @@ -263,18 +263,18 @@ fi %dir %{_includedir}/elfutils %{_includedir}/elfutils/elf-knowledge.h %{_includedir}/elfutils/known-dwarf.h -#%{_includedir}/elfutils/libasm.h +#%%{_includedir}/elfutils/libasm.h %{_includedir}/elfutils/libdw.h %{_includedir}/elfutils/libdwfl.h %{_includedir}/elfutils/libdwelf.h %{_includedir}/elfutils/version.h -#%{_libdir}/libasm.so +#%%{_libdir}/libasm.so %{_libdir}/libdw.so %{_libdir}/pkgconfig/libdw.pc %files devel-static %{_libdir}/libdw.a -#%{_libdir}/libasm.a +#%%{_libdir}/libasm.a %files libelf %license COPYING-GPLV2 COPYING-LGPLV3 diff --git a/tests/ChangeLog b/tests/ChangeLog index 0ea1df3d..31f4d0e4 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,12 @@ +2022-09-20 Yonggang Luo <luoyonggang@gmail.com> + + * Makefile.am (EXTRA_DIST): Remove debuginfod-rpms/hello2.spec. + Add debuginfod-rpms/hello{2,3}.specfile. + * tests/debuginfod-rpms/hello2.spec.: Renamed to... + * tests/debuginfod-rpms/hello2.specfile: ...this. + * tests/debuginfod-rpms/hello3.spec.: Renamed to... + * tests/debuginfod-rpms/hello3.specfile: ...this. + 2022-10-16 Mark Wielaard <mark@klomp.org> * dwfl-report-offline-memory.c: Include config.h first. diff --git a/tests/Makefile.am b/tests/Makefile.am index f680d3e1..ced4a826 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -566,7 +566,8 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \ debuginfod-rpms/fedora31/hello3-debugsource-1.0-2.x86_64.rpm \ debuginfod-rpms/fedora31/hello3-two-1.0-2.x86_64.rpm \ debuginfod-rpms/fedora31/hello3-two-debuginfo-1.0-2.x86_64.rpm \ - debuginfod-rpms/hello2.spec. \ + debuginfod-rpms/hello2.specfile \ + debuginfod-rpms/hello3.specfile \ debuginfod-rpms/rhel6/hello2-1.0-2.i686.rpm \ debuginfod-rpms/rhel6/hello2-1.0-2.src.rpm \ debuginfod-rpms/rhel6/hello2-debuginfo-1.0-2.i686.rpm \ diff --git a/tests/debuginfod-rpms/hello2.spec. b/tests/debuginfod-rpms/hello2.specfile similarity index 100% rename from tests/debuginfod-rpms/hello2.spec. rename to tests/debuginfod-rpms/hello2.specfile diff --git a/tests/debuginfod-rpms/hello3.spec. b/tests/debuginfod-rpms/hello3.specfile similarity index 100% rename from tests/debuginfod-rpms/hello3.spec. rename to tests/debuginfod-rpms/hello3.specfile -- 2.18.4 ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH 1/7] Rename 'hello2.spec.' -> 'hello2.spec' 'hello3.spec.' -> 'hello3.spec' 2022-10-20 16:07 ` Mark Wielaard @ 2022-10-31 13:29 ` Mark Wielaard 2022-11-24 8:27 ` 罗勇刚(Yonggang Luo) 0 siblings, 1 reply; 26+ messages in thread From: Mark Wielaard @ 2022-10-31 13:29 UTC (permalink / raw) To: Frank Ch. Eigler, luoyonggang; +Cc: elfutils-devel Hi, On Thu, 2022-10-20 at 18:07 +0200, Mark Wielaard wrote: > So maybe we just should rename them to .specfile? > That is what the attached patch does, plus some other cleanups. > - We forgot to include the hello3.specfile > - Remove the --sign from rpmbuild > - escape the % in spec comments > > That makes make rpm work out of the box without warnings. > Does it also help the windows git thing? I pushed this. Please let me know if it works for you. Thanks, Mark ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH 1/7] Rename 'hello2.spec.' -> 'hello2.spec' 'hello3.spec.' -> 'hello3.spec' 2022-10-31 13:29 ` Mark Wielaard @ 2022-11-24 8:27 ` 罗勇刚(Yonggang Luo) 0 siblings, 0 replies; 26+ messages in thread From: 罗勇刚(Yonggang Luo) @ 2022-11-24 8:27 UTC (permalink / raw) To: Mark Wielaard; +Cc: Frank Ch. Eigler, elfutils-devel [-- Attachment #1: Type: text/plain, Size: 699 bytes --] Thanks, works fine On Mon, Oct 31, 2022 at 9:29 PM Mark Wielaard <aegon@wildebeest.org> wrote: > > Hi, > > On Thu, 2022-10-20 at 18:07 +0200, Mark Wielaard wrote: > > So maybe we just should rename them to .specfile? > > That is what the attached patch does, plus some other cleanups. > > - We forgot to include the hello3.specfile > > - Remove the --sign from rpmbuild > > - escape the % in spec comments > > > > That makes make rpm work out of the box without warnings. > > Does it also help the windows git thing? > > I pushed this. Please let me know if it works for you. > > Thanks, > > Mark -- 此致 礼 罗勇刚 Yours sincerely, Yonggang Luo ^ permalink raw reply [flat|nested] 26+ messages in thread
* [PATCH 2/7] move platform depended include into system.h 2022-09-20 8:43 [PATCH 0/7] Enable building libelf of elfutils on win32 Yonggang Luo 2022-09-20 8:43 ` [PATCH 1/7] Rename 'hello2.spec.' -> 'hello2.spec' 'hello3.spec.' -> 'hello3.spec' Yonggang Luo @ 2022-09-20 8:43 ` Yonggang Luo 2022-10-14 21:16 ` Mark Wielaard 2022-09-20 8:43 ` [PATCH 3/7] lib: Use NOT_HAVE_LIBINTL to guard if need #include <libintl.h> Yonggang Luo ` (4 subsequent siblings) 6 siblings, 1 reply; 26+ messages in thread From: Yonggang Luo @ 2022-09-20 8:43 UTC (permalink / raw) To: elfutils-devel; +Cc: Yonggang Luo All of these files either #include <system.h> directly or #include "libelfP.h" And now "libelfP.h also #include <system.h>, so the platform depended include can be moved to system.h safely Signed-off-by: Yonggang Luo <luoyonggang@gmail.com> --- lib/system.h | 11 +++++++---- libebl/eblmachineflagname.c | 1 - libebl/eblobjnotetypename.c | 2 -- libebl/eblopenbackend.c | 1 - libelf/common.h | 3 --- libelf/elf32_checksum.c | 1 - libelf/elf32_getphdr.c | 2 -- libelf/elf32_getshdr.c | 2 -- libelf/elf32_updatefile.c | 3 --- libelf/elf32_updatenull.c | 2 -- libelf/elf32_xlatetof.c | 1 - libelf/elf32_xlatetom.c | 1 - libelf/elf_begin.c | 3 --- libelf/elf_cntl.c | 2 -- libelf/elf_compress.c | 2 -- libelf/elf_end.c | 1 - libelf/elf_error.c | 1 - libelf/elf_getarsym.c | 4 ---- libelf/elf_getdata.c | 2 -- libelf/elf_getdata_rawchunk.c | 2 -- libelf/elf_getshdrstrndx.c | 2 -- libelf/elf_readall.c | 2 -- libelf/elf_update.c | 2 -- libelf/gelf_xlate.c | 1 - libelf/libelfP.h | 1 + libelf/nlist.c | 1 - 26 files changed, 8 insertions(+), 48 deletions(-) diff --git a/lib/system.h b/lib/system.h index d3f42c91..48004df1 100644 --- a/lib/system.h +++ b/lib/system.h @@ -35,14 +35,17 @@ #include <errno.h> #include <stddef.h> #include <stdint.h> -#include <sys/param.h> -#include <endian.h> -#include <byteswap.h> -#include <unistd.h> #include <string.h> #include <stdarg.h> #include <stdlib.h> +/* System dependend headers */ +#include <byteswap.h> +#include <endian.h> +#include <sys/mman.h> +#include <sys/param.h> +#include <unistd.h> + #if defined(HAVE_ERROR_H) #include <error.h> #elif defined(HAVE_ERR_H) diff --git a/libebl/eblmachineflagname.c b/libebl/eblmachineflagname.c index 02e11c65..5897735f 100644 --- a/libebl/eblmachineflagname.c +++ b/libebl/eblmachineflagname.c @@ -33,7 +33,6 @@ #include <stdio.h> #include <string.h> -#include <system.h> #include <libeblP.h> diff --git a/libebl/eblobjnotetypename.c b/libebl/eblobjnotetypename.c index 473a1f2f..2ee1b228 100644 --- a/libebl/eblobjnotetypename.c +++ b/libebl/eblobjnotetypename.c @@ -31,8 +31,6 @@ # include <config.h> #endif -#include <system.h> - #include <inttypes.h> #include <stdio.h> #include <string.h> diff --git a/libebl/eblopenbackend.c b/libebl/eblopenbackend.c index c6657252..9ba8728b 100644 --- a/libebl/eblopenbackend.c +++ b/libebl/eblopenbackend.c @@ -38,7 +38,6 @@ #include <string.h> #include <stdio.h> -#include <system.h> #include <libeblP.h> Ebl *i386_init (Elf *, GElf_Half, Ebl *); diff --git a/libelf/common.h b/libelf/common.h index 3718b3fd..4561854f 100644 --- a/libelf/common.h +++ b/libelf/common.h @@ -30,9 +30,6 @@ #ifndef _COMMON_H #define _COMMON_H 1 -#include <ar.h> -#include <byteswap.h> -#include <endian.h> #include <stdlib.h> #include <string.h> diff --git a/libelf/elf32_checksum.c b/libelf/elf32_checksum.c index c5f27bbe..521668a7 100644 --- a/libelf/elf32_checksum.c +++ b/libelf/elf32_checksum.c @@ -32,7 +32,6 @@ #endif #include <assert.h> -#include <endian.h> #include <stdbool.h> #include <stddef.h> #include <string.h> diff --git a/libelf/elf32_getphdr.c b/libelf/elf32_getphdr.c index 99b4ac09..4bfca24b 100644 --- a/libelf/elf32_getphdr.c +++ b/libelf/elf32_getphdr.c @@ -34,10 +34,8 @@ #include <errno.h> #include <stdbool.h> #include <stdlib.h> -#include <unistd.h> #include <assert.h> -#include <system.h> #include "libelfP.h" #include "common.h" diff --git a/libelf/elf32_getshdr.c b/libelf/elf32_getshdr.c index 237d9122..fc696302 100644 --- a/libelf/elf32_getshdr.c +++ b/libelf/elf32_getshdr.c @@ -34,9 +34,7 @@ #include <assert.h> #include <errno.h> #include <stdbool.h> -#include <unistd.h> -#include <system.h> #include "libelfP.h" #include "common.h" diff --git a/libelf/elf32_updatefile.c b/libelf/elf32_updatefile.c index 1ff58900..46afa1f4 100644 --- a/libelf/elf32_updatefile.c +++ b/libelf/elf32_updatefile.c @@ -37,10 +37,7 @@ #include <stdbool.h> #include <stdlib.h> #include <string.h> -#include <unistd.h> -#include <sys/mman.h> -#include <system.h> #include "libelfP.h" diff --git a/libelf/elf32_updatenull.c b/libelf/elf32_updatenull.c index d0d4d1eb..6c06e5e4 100644 --- a/libelf/elf32_updatenull.c +++ b/libelf/elf32_updatenull.c @@ -32,12 +32,10 @@ #endif #include <assert.h> -#include <endian.h> #include <libelf.h> #include <stdbool.h> #include <string.h> -#include <system.h> #include "libelfP.h" #include "elf-knowledge.h" diff --git a/libelf/elf32_xlatetof.c b/libelf/elf32_xlatetof.c index 082d833f..377659c8 100644 --- a/libelf/elf32_xlatetof.c +++ b/libelf/elf32_xlatetof.c @@ -32,7 +32,6 @@ #endif #include <assert.h> -#include <endian.h> #include <string.h> #include "libelfP.h" diff --git a/libelf/elf32_xlatetom.c b/libelf/elf32_xlatetom.c index cb0bb8d5..fa3dc9a7 100644 --- a/libelf/elf32_xlatetom.c +++ b/libelf/elf32_xlatetom.c @@ -32,7 +32,6 @@ #endif #include <assert.h> -#include <endian.h> #include <string.h> #include "libelfP.h" diff --git a/libelf/elf_begin.c b/libelf/elf_begin.c index 71eb3594..fe8c640a 100644 --- a/libelf/elf_begin.c +++ b/libelf/elf_begin.c @@ -39,11 +39,8 @@ #include <stdbool.h> #include <stddef.h> #include <string.h> -#include <unistd.h> -#include <sys/mman.h> #include <sys/stat.h> -#include <system.h> #include "libelfP.h" #include "common.h" diff --git a/libelf/elf_cntl.c b/libelf/elf_cntl.c index fd681789..04aa9132 100644 --- a/libelf/elf_cntl.c +++ b/libelf/elf_cntl.c @@ -31,8 +31,6 @@ # include <config.h> #endif -#include <unistd.h> - #include "libelfP.h" diff --git a/libelf/elf_compress.c b/libelf/elf_compress.c index df0144e8..d7f53af2 100644 --- a/libelf/elf_compress.c +++ b/libelf/elf_compress.c @@ -31,14 +31,12 @@ #endif #include <libelf.h> -#include <system.h> #include "libelfP.h" #include "common.h" #include <stddef.h> #include <stdlib.h> #include <string.h> -#include <unistd.h> #include <zlib.h> /* Cleanup and return result. Don't leak memory. */ diff --git a/libelf/elf_end.c b/libelf/elf_end.c index 160f0b88..5c451f36 100644 --- a/libelf/elf_end.c +++ b/libelf/elf_end.c @@ -34,7 +34,6 @@ #include <assert.h> #include <stddef.h> #include <stdlib.h> -#include <sys/mman.h> #include "libelfP.h" diff --git a/libelf/elf_error.c b/libelf/elf_error.c index 5364e685..e596108d 100644 --- a/libelf/elf_error.c +++ b/libelf/elf_error.c @@ -32,7 +32,6 @@ #endif #include <assert.h> -#include <libintl.h> #include <stdbool.h> #include <stdint.h> #include <stdlib.h> diff --git a/libelf/elf_getarsym.c b/libelf/elf_getarsym.c index 05ebf6a9..2203521f 100644 --- a/libelf/elf_getarsym.c +++ b/libelf/elf_getarsym.c @@ -32,16 +32,12 @@ #endif #include <assert.h> -#include <byteswap.h> -#include <endian.h> #include <errno.h> #include <stdbool.h> #include <stdint.h> #include <stdlib.h> #include <string.h> -#include <unistd.h> -#include <system.h> #include <dl-hash.h> #include "libelfP.h" diff --git a/libelf/elf_getdata.c b/libelf/elf_getdata.c index a704aae3..5ebd270f 100644 --- a/libelf/elf_getdata.c +++ b/libelf/elf_getdata.c @@ -35,10 +35,8 @@ #include <errno.h> #include <stddef.h> #include <string.h> -#include <unistd.h> #include "libelfP.h" -#include <system.h> #include "common.h" #include "elf-knowledge.h" diff --git a/libelf/elf_getdata_rawchunk.c b/libelf/elf_getdata_rawchunk.c index 2f55cbb4..5a35ccdc 100644 --- a/libelf/elf_getdata_rawchunk.c +++ b/libelf/elf_getdata_rawchunk.c @@ -35,9 +35,7 @@ #include <errno.h> #include <stdlib.h> #include <string.h> -#include <unistd.h> -#include <system.h> #include "libelfP.h" #include "common.h" diff --git a/libelf/elf_getshdrstrndx.c b/libelf/elf_getshdrstrndx.c index ad884fd3..2391317b 100644 --- a/libelf/elf_getshdrstrndx.c +++ b/libelf/elf_getshdrstrndx.c @@ -35,9 +35,7 @@ #include <errno.h> #include <gelf.h> #include <stddef.h> -#include <unistd.h> -#include <system.h> #include "libelfP.h" #include "common.h" diff --git a/libelf/elf_readall.c b/libelf/elf_readall.c index 0a3a233d..d0f9a28c 100644 --- a/libelf/elf_readall.c +++ b/libelf/elf_readall.c @@ -32,10 +32,8 @@ #endif #include <errno.h> -#include <unistd.h> #include <sys/stat.h> -#include <system.h> #include "libelfP.h" #include "common.h" diff --git a/libelf/elf_update.c b/libelf/elf_update.c index 97ca9ca9..56af3a1c 100644 --- a/libelf/elf_update.c +++ b/libelf/elf_update.c @@ -33,8 +33,6 @@ #include <libelf.h> #include <fcntl.h> -#include <unistd.h> -#include <sys/mman.h> #include <sys/stat.h> #include "libelfP.h" diff --git a/libelf/gelf_xlate.c b/libelf/gelf_xlate.c index 6f8c57b7..d8ad0634 100644 --- a/libelf/gelf_xlate.c +++ b/libelf/gelf_xlate.c @@ -32,7 +32,6 @@ # include <config.h> #endif -#include <byteswap.h> #include <stdint.h> #include <string.h> #include <stdlib.h> diff --git a/libelf/libelfP.h b/libelf/libelfP.h index 56331f45..d88a613c 100644 --- a/libelf/libelfP.h +++ b/libelf/libelfP.h @@ -39,6 +39,7 @@ #include <stdio.h> #include <string.h> +#include <system.h> /* Helper Macros to write 32 bit and 64 bit functions. */ #define __elfw2_(Bits, Name) __elf##Bits##_##Name diff --git a/libelf/nlist.c b/libelf/nlist.c index 8593c1de..b3d60435 100644 --- a/libelf/nlist.c +++ b/libelf/nlist.c @@ -35,7 +35,6 @@ #include <gelf.h> #include <libelf.h> #include <nlist.h> -#include <unistd.h> #include "libelfP.h" -- 2.36.1.windows.1 ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH 2/7] move platform depended include into system.h 2022-09-20 8:43 ` [PATCH 2/7] move platform depended include into system.h Yonggang Luo @ 2022-10-14 21:16 ` Mark Wielaard 2022-10-15 17:01 ` 罗勇刚(Yonggang Luo) 0 siblings, 1 reply; 26+ messages in thread From: Mark Wielaard @ 2022-10-14 21:16 UTC (permalink / raw) To: Yonggang Luo; +Cc: elfutils-devel On Tue, Sep 20, 2022 at 04:43:02PM +0800, Yonggang Luo via Elfutils-devel wrote: > All of these files either #include <system.h> directly or #include "libelfP.h" > And now "libelfP.h also #include <system.h>, so the platform depended include > can be moved to system.h safely I like this in theory since it cleans up some of the includes. But it doesn't work as is. libebl/eblobjnotetypename.c only included system.h so now doesn't compile anymore. And libintl.h is removed from libelf/elf_error.c which really is necessary. Cheers, Mark ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH 2/7] move platform depended include into system.h 2022-10-14 21:16 ` Mark Wielaard @ 2022-10-15 17:01 ` 罗勇刚(Yonggang Luo) 0 siblings, 0 replies; 26+ messages in thread From: 罗勇刚(Yonggang Luo) @ 2022-10-15 17:01 UTC (permalink / raw) To: Mark Wielaard; +Cc: elfutils-devel [-- Attachment #1: Type: text/plain, Size: 762 bytes --] OK, updated in v2 On Sat, Oct 15, 2022 at 5:16 AM Mark Wielaard <mark@klomp.org> wrote: > > On Tue, Sep 20, 2022 at 04:43:02PM +0800, Yonggang Luo via Elfutils-devel wrote: > > All of these files either #include <system.h> directly or #include "libelfP.h" > > And now "libelfP.h also #include <system.h>, so the platform depended include > > can be moved to system.h safely > > I like this in theory since it cleans up some of the includes. > But it doesn't work as is. > > libebl/eblobjnotetypename.c only included system.h so now doesn't > compile anymore. And libintl.h is removed from libelf/elf_error.c > which really is necessary. > > Cheers, > > Mark -- 此致 礼 罗勇刚 Yours sincerely, Yonggang Luo ^ permalink raw reply [flat|nested] 26+ messages in thread
* [PATCH 3/7] lib: Use NOT_HAVE_LIBINTL to guard if need #include <libintl.h> 2022-09-20 8:43 [PATCH 0/7] Enable building libelf of elfutils on win32 Yonggang Luo 2022-09-20 8:43 ` [PATCH 1/7] Rename 'hello2.spec.' -> 'hello2.spec' 'hello3.spec.' -> 'hello3.spec' Yonggang Luo 2022-09-20 8:43 ` [PATCH 2/7] move platform depended include into system.h Yonggang Luo @ 2022-09-20 8:43 ` Yonggang Luo 2022-09-20 8:43 ` [PATCH 4/7] Remove duplicated " Yonggang Luo ` (3 subsequent siblings) 6 siblings, 0 replies; 26+ messages in thread From: Yonggang Luo @ 2022-09-20 8:43 UTC (permalink / raw) To: elfutils-devel; +Cc: Yonggang Luo Signed-off-by: Yonggang Luo <luoyonggang@gmail.com> --- lib/eu-config.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/eu-config.h b/lib/eu-config.h index c7d7cbb2..5e6c3c72 100644 --- a/lib/eu-config.h +++ b/lib/eu-config.h @@ -52,9 +52,17 @@ # define rwlock_unlock(lock) ((void) (lock)) #endif /* USE_LOCKS */ +#if !defined(NOT_HAVE_LIBINTL) +#include <libintl.h> +#endif + /* gettext helper macros. */ #define N_(Str) Str +#if !defined(NOT_HAVE_LIBINTL) #define _(Str) dgettext ("elfutils", Str) +#else +#define _(Str) N_(Str) +#endif /* Compiler-specific definitions. */ #define strong_alias(name, aliasname) \ -- 2.36.1.windows.1 ^ permalink raw reply [flat|nested] 26+ messages in thread
* [PATCH 4/7] Remove duplicated #include <libintl.h> 2022-09-20 8:43 [PATCH 0/7] Enable building libelf of elfutils on win32 Yonggang Luo ` (2 preceding siblings ...) 2022-09-20 8:43 ` [PATCH 3/7] lib: Use NOT_HAVE_LIBINTL to guard if need #include <libintl.h> Yonggang Luo @ 2022-09-20 8:43 ` Yonggang Luo 2022-09-20 8:43 ` [PATCH 5/7] Strip __ prefix from __BYTE_ORDER __LITTLE_ENDIAN and __BIG_ENDIAN Yonggang Luo ` (2 subsequent siblings) 6 siblings, 0 replies; 26+ messages in thread From: Yonggang Luo @ 2022-09-20 8:43 UTC (permalink / raw) To: elfutils-devel; +Cc: Yonggang Luo Signed-off-by: Yonggang Luo <luoyonggang@gmail.com> --- debuginfod/debuginfod.cxx | 1 - lib/color.c | 1 - lib/printversion.c | 1 - lib/xasprintf.c | 1 - lib/xmalloc.c | 1 - libasm/asm_end.c | 1 - libasm/asm_error.c | 1 - libasm/asm_newscn.c | 1 - libcpu/i386_lex.l | 1 - libcpu/i386_parse.y | 1 - libdw/libdwP.h | 1 - libdwfl/argp-std.c | 1 - libdwfl/dwfl_error.c | 1 - libebl/libeblP.h | 1 - src/addr2line.c | 1 - src/ar.c | 1 - src/arlib-argp.c | 1 - src/arlib.c | 1 - src/arlib2.c | 1 - src/elfcmp.c | 1 - src/elflint.c | 1 - src/findtextrel.c | 1 - src/nm.c | 1 - src/objdump.c | 1 - src/ranlib.c | 1 - src/readelf.c | 1 - src/size.c | 1 - src/strings.c | 1 - src/strip.c | 1 - src/unstrip.c | 1 - 30 files changed, 30 deletions(-) diff --git a/debuginfod/debuginfod.cxx b/debuginfod/debuginfod.cxx index 000a41c4..8e7ee499 100644 --- a/debuginfod/debuginfod.cxx +++ b/debuginfod/debuginfod.cxx @@ -47,7 +47,6 @@ extern "C" { #include <unistd.h> #include <stdlib.h> -#include <libintl.h> #include <locale.h> #include <pthread.h> #include <signal.h> diff --git a/lib/color.c b/lib/color.c index e43b6143..bd105ec2 100644 --- a/lib/color.c +++ b/lib/color.c @@ -32,7 +32,6 @@ #endif #include <argp.h> -#include <libintl.h> #include <stdlib.h> #include <string.h> #include <unistd.h> diff --git a/lib/printversion.c b/lib/printversion.c index f657329c..7d31fa83 100644 --- a/lib/printversion.c +++ b/lib/printversion.c @@ -30,7 +30,6 @@ # include <config.h> #endif -#include <libintl.h> #include "printversion.h" void diff --git a/lib/xasprintf.c b/lib/xasprintf.c index 179ea2e8..d61fad90 100644 --- a/lib/xasprintf.c +++ b/lib/xasprintf.c @@ -33,7 +33,6 @@ #include <stdarg.h> #include <stdio.h> #include <stdlib.h> -#include <libintl.h> #include "libeu.h" #include "system.h" diff --git a/lib/xmalloc.c b/lib/xmalloc.c index 7c094985..de7211f1 100644 --- a/lib/xmalloc.c +++ b/lib/xmalloc.c @@ -30,7 +30,6 @@ # include <config.h> #endif -#include <libintl.h> #include <stddef.h> #include <stdlib.h> #include <sys/types.h> diff --git a/libasm/asm_end.c b/libasm/asm_end.c index 077d2aa5..a26120f2 100644 --- a/libasm/asm_end.c +++ b/libasm/asm_end.c @@ -32,7 +32,6 @@ #endif #include <assert.h> -#include <libintl.h> #include <stdio.h> #include <stdlib.h> #include <string.h> diff --git a/libasm/asm_error.c b/libasm/asm_error.c index cc3e660b..2b769395 100644 --- a/libasm/asm_error.c +++ b/libasm/asm_error.c @@ -31,7 +31,6 @@ # include <config.h> #endif -#include <libintl.h> #include <stdbool.h> #include <stdlib.h> diff --git a/libasm/asm_newscn.c b/libasm/asm_newscn.c index 1150015f..d258d969 100644 --- a/libasm/asm_newscn.c +++ b/libasm/asm_newscn.c @@ -32,7 +32,6 @@ #endif #include <assert.h> -#include <libintl.h> #include <stdlib.h> #include <string.h> diff --git a/libcpu/i386_lex.l b/libcpu/i386_lex.l index b6ec0f87..9b33ed95 100644 --- a/libcpu/i386_lex.l +++ b/libcpu/i386_lex.l @@ -31,7 +31,6 @@ #endif #include <ctype.h> -#include <libintl.h> #include <libeu.h> #include "system.h" diff --git a/libcpu/i386_parse.y b/libcpu/i386_parse.y index 9a92c2e0..d2236d59 100644 --- a/libcpu/i386_parse.y +++ b/libcpu/i386_parse.y @@ -35,7 +35,6 @@ #include <ctype.h> #include <errno.h> #include <inttypes.h> -#include <libintl.h> #include <math.h> #include <obstack.h> #include <search.h> diff --git a/libdw/libdwP.h b/libdw/libdwP.h index 56b388c1..961fa4e7 100644 --- a/libdw/libdwP.h +++ b/libdw/libdwP.h @@ -29,7 +29,6 @@ #ifndef _LIBDWP_H #define _LIBDWP_H 1 -#include <libintl.h> #include <stdbool.h> #include <pthread.h> diff --git a/libdwfl/argp-std.c b/libdwfl/argp-std.c index 01ec18e2..bc013aa0 100644 --- a/libdwfl/argp-std.c +++ b/libdwfl/argp-std.c @@ -34,7 +34,6 @@ #include <argp.h> #include <stdlib.h> #include <assert.h> -#include <libintl.h> #include <fcntl.h> #include <unistd.h> diff --git a/libdwfl/dwfl_error.c b/libdwfl/dwfl_error.c index a5c683a9..43fa1dcc 100644 --- a/libdwfl/dwfl_error.c +++ b/libdwfl/dwfl_error.c @@ -31,7 +31,6 @@ #endif #include <assert.h> -#include <libintl.h> #include <stdbool.h> #include <stdint.h> #include <stdlib.h> diff --git a/libebl/libeblP.h b/libebl/libeblP.h index fa1c2c9f..c408ed97 100644 --- a/libebl/libeblP.h +++ b/libebl/libeblP.h @@ -32,7 +32,6 @@ #include <gelf.h> #include <libasm.h> #include <libebl.h> -#include <libintl.h> /* Backend handle. */ diff --git a/src/addr2line.c b/src/addr2line.c index 25db2926..7768b266 100644 --- a/src/addr2line.c +++ b/src/addr2line.c @@ -28,7 +28,6 @@ #include <inttypes.h> #include <libdwfl.h> #include <dwarf.h> -#include <libintl.h> #include <locale.h> #include <stdbool.h> #include <stdio.h> diff --git a/src/ar.c b/src/ar.c index 04456c18..3bcb18fe 100644 --- a/src/ar.c +++ b/src/ar.c @@ -24,7 +24,6 @@ #include <assert.h> #include <fcntl.h> #include <gelf.h> -#include <libintl.h> #include <limits.h> #include <locale.h> #include <search.h> diff --git a/src/arlib-argp.c b/src/arlib-argp.c index a3c12e4d..115b9d76 100644 --- a/src/arlib-argp.c +++ b/src/arlib-argp.c @@ -20,7 +20,6 @@ #endif #include <argp.h> -#include <libintl.h> #include "arlib.h" diff --git a/src/arlib.c b/src/arlib.c index c09fc3c6..b8f89ba7 100644 --- a/src/arlib.c +++ b/src/arlib.c @@ -23,7 +23,6 @@ #include <assert.h> #include <gelf.h> #include <inttypes.h> -#include <libintl.h> #include <stdio.h> #include <stdlib.h> #include <time.h> diff --git a/src/arlib2.c b/src/arlib2.c index 11f44e5d..9ae6662c 100644 --- a/src/arlib2.c +++ b/src/arlib2.c @@ -20,7 +20,6 @@ # include <config.h> #endif -#include <libintl.h> #include <limits.h> #include <string.h> diff --git a/src/elfcmp.c b/src/elfcmp.c index 21d8d9dc..fba67e02 100644 --- a/src/elfcmp.c +++ b/src/elfcmp.c @@ -25,7 +25,6 @@ #include <errno.h> #include <fcntl.h> #include <locale.h> -#include <libintl.h> #include <stdbool.h> #include <stdio.h> #include <stdlib.h> diff --git a/src/elflint.c b/src/elflint.c index b0e5415e..565cffdc 100644 --- a/src/elflint.c +++ b/src/elflint.c @@ -27,7 +27,6 @@ #include <fcntl.h> #include <gelf.h> #include <inttypes.h> -#include <libintl.h> #include <locale.h> #include <stdbool.h> #include <stdlib.h> diff --git a/src/findtextrel.c b/src/findtextrel.c index ecb1d118..d3021a3a 100644 --- a/src/findtextrel.c +++ b/src/findtextrel.c @@ -26,7 +26,6 @@ #include <fcntl.h> #include <gelf.h> #include <libdw.h> -#include <libintl.h> #include <locale.h> #include <search.h> #include <stdbool.h> diff --git a/src/nm.c b/src/nm.c index 16647589..b46c1fd7 100644 --- a/src/nm.c +++ b/src/nm.c @@ -30,7 +30,6 @@ #include <gelf.h> #include <inttypes.h> #include <libdw.h> -#include <libintl.h> #include <locale.h> #include <obstack.h> #include <search.h> diff --git a/src/objdump.c b/src/objdump.c index b32de17d..d43c1dd6 100644 --- a/src/objdump.c +++ b/src/objdump.c @@ -23,7 +23,6 @@ #include <argp.h> #include <fcntl.h> #include <inttypes.h> -#include <libintl.h> #include <locale.h> #include <stdbool.h> #include <stdio.h> diff --git a/src/ranlib.c b/src/ranlib.c index bd7e1d8a..7838d69e 100644 --- a/src/ranlib.c +++ b/src/ranlib.c @@ -26,7 +26,6 @@ #include <errno.h> #include <fcntl.h> #include <gelf.h> -#include <libintl.h> #include <locale.h> #include <obstack.h> #include <stdlib.h> diff --git a/src/readelf.c b/src/readelf.c index 1a10fd01..a206e60e 100644 --- a/src/readelf.c +++ b/src/readelf.c @@ -30,7 +30,6 @@ #include <langinfo.h> #include <libdw.h> #include <libdwfl.h> -#include <libintl.h> #include <locale.h> #include <stdarg.h> #include <stdbool.h> diff --git a/src/size.c b/src/size.c index 8f203167..ff8ca075 100644 --- a/src/size.c +++ b/src/size.c @@ -25,7 +25,6 @@ #include <gelf.h> #include <inttypes.h> #include <libelf.h> -#include <libintl.h> #include <locale.h> #include <stdbool.h> #include <stdio.h> diff --git a/src/strings.c b/src/strings.c index 04aac3b6..55b047be 100644 --- a/src/strings.c +++ b/src/strings.c @@ -28,7 +28,6 @@ #include <fcntl.h> #include <gelf.h> #include <inttypes.h> -#include <libintl.h> #include <locale.h> #include <stdbool.h> #include <stdio.h> diff --git a/src/strip.c b/src/strip.c index 452b1279..2a2cc801 100644 --- a/src/strip.c +++ b/src/strip.c @@ -28,7 +28,6 @@ #include <fnmatch.h> #include <gelf.h> #include <libelf.h> -#include <libintl.h> #include <locale.h> #include <stdbool.h> #include <stdio.h> diff --git a/src/unstrip.c b/src/unstrip.c index 3472637a..d5bd1821 100644 --- a/src/unstrip.c +++ b/src/unstrip.c @@ -33,7 +33,6 @@ #include <errno.h> #include <fcntl.h> #include <fnmatch.h> -#include <libintl.h> #include <locale.h> #include <stdbool.h> #include <stdio.h> -- 2.36.1.windows.1 ^ permalink raw reply [flat|nested] 26+ messages in thread
* [PATCH 5/7] Strip __ prefix from __BYTE_ORDER __LITTLE_ENDIAN and __BIG_ENDIAN 2022-09-20 8:43 [PATCH 0/7] Enable building libelf of elfutils on win32 Yonggang Luo ` (3 preceding siblings ...) 2022-09-20 8:43 ` [PATCH 4/7] Remove duplicated " Yonggang Luo @ 2022-09-20 8:43 ` Yonggang Luo 2022-10-16 21:11 ` Mark Wielaard 2022-09-20 8:43 ` [PATCH 6/7] Fixes building with msvc/clang mingw/gcc Yonggang Luo 2022-09-20 8:43 ` [PATCH 7/7] Add CMake build files Yonggang Luo 6 siblings, 1 reply; 26+ messages in thread From: Yonggang Luo @ 2022-09-20 8:43 UTC (permalink / raw) To: elfutils-devel; +Cc: Yonggang Luo Signed-off-by: Yonggang Luo <luoyonggang@gmail.com> --- lib/system.h | 4 ++-- libcpu/i386_disasm.c | 2 +- libcpu/memory-access.h | 26 +++++++++++++------------- libcpu/riscv_disasm.c | 2 +- libdw/memory-access.h | 8 ++++---- libdwfl/dwfl_segment_report_module.c | 2 +- libelf/common.h | 2 +- libelf/elf32_checksum.c | 4 ++-- libelf/elf32_xlatetof.c | 4 ++-- libelf/elf_getarsym.c | 6 +++--- src/arlib.h | 2 +- 11 files changed, 31 insertions(+), 31 deletions(-) diff --git a/lib/system.h b/lib/system.h index 48004df1..bbbe06c4 100644 --- a/lib/system.h +++ b/lib/system.h @@ -64,12 +64,12 @@ void error(int status, int errnum, const char *format, ...); exit (EXIT_FAILURE); \ } while (0) -#if __BYTE_ORDER == __LITTLE_ENDIAN +#if BYTE_ORDER == LITTLE_ENDIAN # define LE32(n) (n) # define LE64(n) (n) # define BE32(n) bswap_32 (n) # define BE64(n) bswap_64 (n) -#elif __BYTE_ORDER == __BIG_ENDIAN +#elif BYTE_ORDER == BIG_ENDIAN # define BE32(n) (n) # define BE64(n) (n) # define LE32(n) bswap_32 (n) diff --git a/libcpu/i386_disasm.c b/libcpu/i386_disasm.c index fd7340cc..40475b81 100644 --- a/libcpu/i386_disasm.c +++ b/libcpu/i386_disasm.c @@ -44,7 +44,7 @@ #include "../libebl/libeblP.h" -#define MACHINE_ENCODING __LITTLE_ENDIAN +#define MACHINE_ENCODING LITTLE_ENDIAN #include "memory-access.h" diff --git a/libcpu/memory-access.h b/libcpu/memory-access.h index 779825fa..3b6ca19b 100644 --- a/libcpu/memory-access.h +++ b/libcpu/memory-access.h @@ -41,7 +41,7 @@ #ifndef MACHINE_ENCODING # error "MACHINE_ENCODING needs to be defined" #endif -#if MACHINE_ENCODING != __BIG_ENDIAN && MACHINE_ENCODING != __LITTLE_ENDIAN +#if MACHINE_ENCODING != BIG_ENDIAN && MACHINE_ENCODING != LITTLE_ENDIAN # error "MACHINE_ENCODING must signal either big or little endian" #endif @@ -51,31 +51,31 @@ #if ALLOW_UNALIGNED # define read_2ubyte_unaligned(Addr) \ - (unlikely (MACHINE_ENCODING != __BYTE_ORDER) \ + (unlikely (MACHINE_ENCODING != BYTE_ORDER) \ ? bswap_16 (*((const uint16_t *) (Addr))) \ : *((const uint16_t *) (Addr))) # define read_2sbyte_unaligned(Addr) \ - (unlikely (MACHINE_ENCODING != __BYTE_ORDER) \ + (unlikely (MACHINE_ENCODING != BYTE_ORDER) \ ? (int16_t) bswap_16 (*((const int16_t *) (Addr))) \ : *((const int16_t *) (Addr))) # define read_4ubyte_unaligned_noncvt(Addr) \ *((const uint32_t *) (Addr)) # define read_4ubyte_unaligned(Addr) \ - (unlikely (MACHINE_ENCODING != __BYTE_ORDER) \ + (unlikely (MACHINE_ENCODING != BYTE_ORDER) \ ? bswap_32 (*((const uint32_t *) (Addr))) \ : *((const uint32_t *) (Addr))) # define read_4sbyte_unaligned(Addr) \ - (unlikely (MACHINE_ENCODING != __BYTE_ORDER) \ + (unlikely (MACHINE_ENCODING != BYTE_ORDER) \ ? (int32_t) bswap_32 (*((const int32_t *) (Addr))) \ : *((const int32_t *) (Addr))) # define read_8ubyte_unaligned(Addr) \ - (unlikely (MACHINE_ENCODING != __BYTE_ORDER) \ + (unlikely (MACHINE_ENCODING != BYTE_ORDER) \ ? bswap_64 (*((const uint64_t *) (Addr))) \ : *((const uint64_t *) (Addr))) # define read_8sbyte_unaligned(Addr) \ - (unlikely (MACHINE_ENCODING != __BYTE_ORDER) \ + (unlikely (MACHINE_ENCODING != BYTE_ORDER) \ ? (int64_t) bswap_64 (*((const int64_t *) (Addr))) \ : *((const int64_t *) (Addr))) @@ -96,7 +96,7 @@ static inline uint16_t read_2ubyte_unaligned (const void *p) { const union unaligned *up = p; - if (MACHINE_ENCODING != __BYTE_ORDER) + if (MACHINE_ENCODING != BYTE_ORDER) return bswap_16 (up->u2); return up->u2; } @@ -104,7 +104,7 @@ static inline int16_t read_2sbyte_unaligned (const void *p) { const union unaligned *up = p; - if (MACHINE_ENCODING != __BYTE_ORDER) + if (MACHINE_ENCODING != BYTE_ORDER) return (int16_t) bswap_16 (up->u2); return up->s2; } @@ -119,7 +119,7 @@ static inline uint32_t read_4ubyte_unaligned (const void *p) { const union unaligned *up = p; - if (MACHINE_ENCODING != __BYTE_ORDER) + if (MACHINE_ENCODING != BYTE_ORDER) return bswap_32 (up->u4); return up->u4; } @@ -127,7 +127,7 @@ static inline int32_t read_4sbyte_unaligned (const void *p) { const union unaligned *up = p; - if (MACHINE_ENCODING != __BYTE_ORDER) + if (MACHINE_ENCODING != BYTE_ORDER) return (int32_t) bswap_32 (up->u4); return up->s4; } @@ -136,7 +136,7 @@ static inline uint64_t read_8ubyte_unaligned (const void *p) { const union unaligned *up = p; - if (MACHINE_ENCODING != __BYTE_ORDER) + if (MACHINE_ENCODING != BYTE_ORDER) return bswap_64 (up->u8); return up->u8; } @@ -144,7 +144,7 @@ static inline int64_t read_8sbyte_unaligned (const void *p) { const union unaligned *up = p; - if (MACHINE_ENCODING != __BYTE_ORDER) + if (MACHINE_ENCODING != BYTE_ORDER) return (int64_t) bswap_64 (up->u8); return up->s8; } diff --git a/libcpu/riscv_disasm.c b/libcpu/riscv_disasm.c index bc0d8f37..7175c077 100644 --- a/libcpu/riscv_disasm.c +++ b/libcpu/riscv_disasm.c @@ -41,7 +41,7 @@ #include "../libebl/libeblP.h" -#define MACHINE_ENCODING __LITTLE_ENDIAN +#define MACHINE_ENCODING LITTLE_ENDIAN #include "memory-access.h" diff --git a/libdw/memory-access.h b/libdw/memory-access.h index 8b2386ee..800b517c 100644 --- a/libdw/memory-access.h +++ b/libdw/memory-access.h @@ -355,10 +355,10 @@ read_8sbyte_unaligned_1 (bool other_byte_order, const void *p) static inline int file_byte_order (bool other_byte_order) { -#if __BYTE_ORDER == __LITTLE_ENDIAN - return other_byte_order ? __BIG_ENDIAN : __LITTLE_ENDIAN; +#if BYTE_ORDER == LITTLE_ENDIAN + return other_byte_order ? BIG_ENDIAN : LITTLE_ENDIAN; #else - return other_byte_order ? __LITTLE_ENDIAN : __BIG_ENDIAN; + return other_byte_order ? LITTLE_ENDIAN : BIG_ENDIAN; #endif } @@ -372,7 +372,7 @@ read_3ubyte_unaligned (Dwarf *dbg, const unsigned char *p) } d; bool other_byte_order = dbg->other_byte_order; - if (file_byte_order (other_byte_order) == __BIG_ENDIAN) + if (file_byte_order (other_byte_order) == BIG_ENDIAN) { d.c[0] = 0x00; d.c[1] = p[0]; diff --git a/libdwfl/dwfl_segment_report_module.c b/libdwfl/dwfl_segment_report_module.c index 1461ae26..28f87f10 100644 --- a/libdwfl/dwfl_segment_report_module.c +++ b/libdwfl/dwfl_segment_report_module.c @@ -49,7 +49,7 @@ #define INITIAL_READ 1024 -#if __BYTE_ORDER == __LITTLE_ENDIAN +#if BYTE_ORDER == LITTLE_ENDIAN # define MY_ELFDATA ELFDATA2LSB #else # define MY_ELFDATA ELFDATA2MSB diff --git a/libelf/common.h b/libelf/common.h index 4561854f..9b2a856d 100644 --- a/libelf/common.h +++ b/libelf/common.h @@ -151,7 +151,7 @@ libelf_release_all (Elf *elf) : bswap_64 (Var)))) -#if __BYTE_ORDER == __LITTLE_ENDIAN +#if BYTE_ORDER == LITTLE_ENDIAN # define MY_ELFDATA ELFDATA2LSB #else # define MY_ELFDATA ELFDATA2MSB diff --git a/libelf/elf32_checksum.c b/libelf/elf32_checksum.c index 521668a7..a47b307d 100644 --- a/libelf/elf32_checksum.c +++ b/libelf/elf32_checksum.c @@ -73,9 +73,9 @@ elfw2(LIBELFBITS,checksum) (Elf *elf) is the same. */ ident = elf->state.ELFW(elf,LIBELFBITS).ehdr->e_ident; same_byte_order = ((ident[EI_DATA] == ELFDATA2LSB - && __BYTE_ORDER == __LITTLE_ENDIAN) + && BYTE_ORDER == LITTLE_ENDIAN) || (ident[EI_DATA] == ELFDATA2MSB - && __BYTE_ORDER == __BIG_ENDIAN)); + && BYTE_ORDER == BIG_ENDIAN)); /* If we don't have native byte order, we will likely need to convert the data with xlate functions. We do it upfront instead diff --git a/libelf/elf32_xlatetof.c b/libelf/elf32_xlatetof.c index 377659c8..ab857409 100644 --- a/libelf/elf32_xlatetof.c +++ b/libelf/elf32_xlatetof.c @@ -82,8 +82,8 @@ elfw2(LIBELFBITS, xlatetof) (Elf_Data *dest, const Elf_Data *src, and vice versa since the function only has to copy and/or change the byte order. */ - if ((__BYTE_ORDER == __LITTLE_ENDIAN && encode == ELFDATA2LSB) - || (__BYTE_ORDER == __BIG_ENDIAN && encode == ELFDATA2MSB)) + if ((BYTE_ORDER == LITTLE_ENDIAN && encode == ELFDATA2LSB) + || (BYTE_ORDER == BIG_ENDIAN && encode == ELFDATA2MSB)) { /* We simply have to copy since the byte order is the same. */ if (src->d_buf != dest->d_buf) diff --git a/libelf/elf_getarsym.c b/libelf/elf_getarsym.c index 2203521f..281f0c1c 100644 --- a/libelf/elf_getarsym.c +++ b/libelf/elf_getarsym.c @@ -61,7 +61,7 @@ read_number_entries (uint64_t *nump, Elf *elf, size_t *offp, bool index64_p) *offp += w; - if (__BYTE_ORDER == __LITTLE_ENDIAN) + if (BYTE_ORDER == LITTLE_ENDIAN) *nump = index64_p ? bswap_64 (u.ret64) : bswap_32 (u.ret32); else *nump = index64_p ? u.ret64 : u.ret32; @@ -266,7 +266,7 @@ elf_getarsym (Elf *elf, size_t *ptr) if (index64_p) { uint64_t tmp = (*u64)[cnt]; - if (__BYTE_ORDER == __LITTLE_ENDIAN) + if (BYTE_ORDER == LITTLE_ENDIAN) tmp = bswap_64 (tmp); arsym[cnt].as_off = tmp; @@ -286,7 +286,7 @@ elf_getarsym (Elf *elf, size_t *ptr) goto out; } } - else if (__BYTE_ORDER == __LITTLE_ENDIAN) + else if (BYTE_ORDER == LITTLE_ENDIAN) arsym[cnt].as_off = bswap_32 ((*u32)[cnt]); else arsym[cnt].as_off = (*u32)[cnt]; diff --git a/src/arlib.h b/src/arlib.h index e117166e..d4a42210 100644 --- a/src/arlib.h +++ b/src/arlib.h @@ -46,7 +46,7 @@ extern const struct argp_child arlib_argp_children[]; #define AR_HDR_WORDS (sizeof (struct ar_hdr) / sizeof (uint32_t)) -#if __BYTE_ORDER == __LITTLE_ENDIAN +#if BYTE_ORDER == LITTLE_ENDIAN # define le_bswap_32(val) bswap_32 (val) #else # define le_bswap_32(val) (val) -- 2.36.1.windows.1 ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH 5/7] Strip __ prefix from __BYTE_ORDER __LITTLE_ENDIAN and __BIG_ENDIAN 2022-09-20 8:43 ` [PATCH 5/7] Strip __ prefix from __BYTE_ORDER __LITTLE_ENDIAN and __BIG_ENDIAN Yonggang Luo @ 2022-10-16 21:11 ` Mark Wielaard 2022-10-17 3:40 ` 罗勇刚(Yonggang Luo) 0 siblings, 1 reply; 26+ messages in thread From: Mark Wielaard @ 2022-10-16 21:11 UTC (permalink / raw) To: Yonggang Luo; +Cc: elfutils-devel Hi, This seems to work and is probably OK. But do you know when/what the __ prefix versions are defined and when/what defines the non-prefixed versions? Thanks, Mark On Tue, Sep 20, 2022 at 04:43:05PM +0800, Yonggang Luo via Elfutils-devel wrote: > Signed-off-by: Yonggang Luo <luoyonggang@gmail.com> > --- > lib/system.h | 4 ++-- > libcpu/i386_disasm.c | 2 +- > libcpu/memory-access.h | 26 +++++++++++++------------- > libcpu/riscv_disasm.c | 2 +- > libdw/memory-access.h | 8 ++++---- > libdwfl/dwfl_segment_report_module.c | 2 +- > libelf/common.h | 2 +- > libelf/elf32_checksum.c | 4 ++-- > libelf/elf32_xlatetof.c | 4 ++-- > libelf/elf_getarsym.c | 6 +++--- > src/arlib.h | 2 +- > 11 files changed, 31 insertions(+), 31 deletions(-) > > diff --git a/lib/system.h b/lib/system.h > index 48004df1..bbbe06c4 100644 > --- a/lib/system.h > +++ b/lib/system.h > @@ -64,12 +64,12 @@ void error(int status, int errnum, const char *format, ...); > exit (EXIT_FAILURE); \ > } while (0) > > -#if __BYTE_ORDER == __LITTLE_ENDIAN > +#if BYTE_ORDER == LITTLE_ENDIAN > # define LE32(n) (n) > # define LE64(n) (n) > # define BE32(n) bswap_32 (n) > # define BE64(n) bswap_64 (n) > -#elif __BYTE_ORDER == __BIG_ENDIAN > +#elif BYTE_ORDER == BIG_ENDIAN > # define BE32(n) (n) > # define BE64(n) (n) > # define LE32(n) bswap_32 (n) > diff --git a/libcpu/i386_disasm.c b/libcpu/i386_disasm.c > index fd7340cc..40475b81 100644 > --- a/libcpu/i386_disasm.c > +++ b/libcpu/i386_disasm.c > @@ -44,7 +44,7 @@ > > #include "../libebl/libeblP.h" > > -#define MACHINE_ENCODING __LITTLE_ENDIAN > +#define MACHINE_ENCODING LITTLE_ENDIAN > #include "memory-access.h" > > > diff --git a/libcpu/memory-access.h b/libcpu/memory-access.h > index 779825fa..3b6ca19b 100644 > --- a/libcpu/memory-access.h > +++ b/libcpu/memory-access.h > @@ -41,7 +41,7 @@ > #ifndef MACHINE_ENCODING > # error "MACHINE_ENCODING needs to be defined" > #endif > -#if MACHINE_ENCODING != __BIG_ENDIAN && MACHINE_ENCODING != __LITTLE_ENDIAN > +#if MACHINE_ENCODING != BIG_ENDIAN && MACHINE_ENCODING != LITTLE_ENDIAN > # error "MACHINE_ENCODING must signal either big or little endian" > #endif > > @@ -51,31 +51,31 @@ > #if ALLOW_UNALIGNED > > # define read_2ubyte_unaligned(Addr) \ > - (unlikely (MACHINE_ENCODING != __BYTE_ORDER) \ > + (unlikely (MACHINE_ENCODING != BYTE_ORDER) \ > ? bswap_16 (*((const uint16_t *) (Addr))) \ > : *((const uint16_t *) (Addr))) > # define read_2sbyte_unaligned(Addr) \ > - (unlikely (MACHINE_ENCODING != __BYTE_ORDER) \ > + (unlikely (MACHINE_ENCODING != BYTE_ORDER) \ > ? (int16_t) bswap_16 (*((const int16_t *) (Addr))) \ > : *((const int16_t *) (Addr))) > > # define read_4ubyte_unaligned_noncvt(Addr) \ > *((const uint32_t *) (Addr)) > # define read_4ubyte_unaligned(Addr) \ > - (unlikely (MACHINE_ENCODING != __BYTE_ORDER) \ > + (unlikely (MACHINE_ENCODING != BYTE_ORDER) \ > ? bswap_32 (*((const uint32_t *) (Addr))) \ > : *((const uint32_t *) (Addr))) > # define read_4sbyte_unaligned(Addr) \ > - (unlikely (MACHINE_ENCODING != __BYTE_ORDER) \ > + (unlikely (MACHINE_ENCODING != BYTE_ORDER) \ > ? (int32_t) bswap_32 (*((const int32_t *) (Addr))) \ > : *((const int32_t *) (Addr))) > > # define read_8ubyte_unaligned(Addr) \ > - (unlikely (MACHINE_ENCODING != __BYTE_ORDER) \ > + (unlikely (MACHINE_ENCODING != BYTE_ORDER) \ > ? bswap_64 (*((const uint64_t *) (Addr))) \ > : *((const uint64_t *) (Addr))) > # define read_8sbyte_unaligned(Addr) \ > - (unlikely (MACHINE_ENCODING != __BYTE_ORDER) \ > + (unlikely (MACHINE_ENCODING != BYTE_ORDER) \ > ? (int64_t) bswap_64 (*((const int64_t *) (Addr))) \ > : *((const int64_t *) (Addr))) > > @@ -96,7 +96,7 @@ static inline uint16_t > read_2ubyte_unaligned (const void *p) > { > const union unaligned *up = p; > - if (MACHINE_ENCODING != __BYTE_ORDER) > + if (MACHINE_ENCODING != BYTE_ORDER) > return bswap_16 (up->u2); > return up->u2; > } > @@ -104,7 +104,7 @@ static inline int16_t > read_2sbyte_unaligned (const void *p) > { > const union unaligned *up = p; > - if (MACHINE_ENCODING != __BYTE_ORDER) > + if (MACHINE_ENCODING != BYTE_ORDER) > return (int16_t) bswap_16 (up->u2); > return up->s2; > } > @@ -119,7 +119,7 @@ static inline uint32_t > read_4ubyte_unaligned (const void *p) > { > const union unaligned *up = p; > - if (MACHINE_ENCODING != __BYTE_ORDER) > + if (MACHINE_ENCODING != BYTE_ORDER) > return bswap_32 (up->u4); > return up->u4; > } > @@ -127,7 +127,7 @@ static inline int32_t > read_4sbyte_unaligned (const void *p) > { > const union unaligned *up = p; > - if (MACHINE_ENCODING != __BYTE_ORDER) > + if (MACHINE_ENCODING != BYTE_ORDER) > return (int32_t) bswap_32 (up->u4); > return up->s4; > } > @@ -136,7 +136,7 @@ static inline uint64_t > read_8ubyte_unaligned (const void *p) > { > const union unaligned *up = p; > - if (MACHINE_ENCODING != __BYTE_ORDER) > + if (MACHINE_ENCODING != BYTE_ORDER) > return bswap_64 (up->u8); > return up->u8; > } > @@ -144,7 +144,7 @@ static inline int64_t > read_8sbyte_unaligned (const void *p) > { > const union unaligned *up = p; > - if (MACHINE_ENCODING != __BYTE_ORDER) > + if (MACHINE_ENCODING != BYTE_ORDER) > return (int64_t) bswap_64 (up->u8); > return up->s8; > } > diff --git a/libcpu/riscv_disasm.c b/libcpu/riscv_disasm.c > index bc0d8f37..7175c077 100644 > --- a/libcpu/riscv_disasm.c > +++ b/libcpu/riscv_disasm.c > @@ -41,7 +41,7 @@ > > #include "../libebl/libeblP.h" > > -#define MACHINE_ENCODING __LITTLE_ENDIAN > +#define MACHINE_ENCODING LITTLE_ENDIAN > #include "memory-access.h" > > > diff --git a/libdw/memory-access.h b/libdw/memory-access.h > index 8b2386ee..800b517c 100644 > --- a/libdw/memory-access.h > +++ b/libdw/memory-access.h > @@ -355,10 +355,10 @@ read_8sbyte_unaligned_1 (bool other_byte_order, const void *p) > static inline int > file_byte_order (bool other_byte_order) > { > -#if __BYTE_ORDER == __LITTLE_ENDIAN > - return other_byte_order ? __BIG_ENDIAN : __LITTLE_ENDIAN; > +#if BYTE_ORDER == LITTLE_ENDIAN > + return other_byte_order ? BIG_ENDIAN : LITTLE_ENDIAN; > #else > - return other_byte_order ? __LITTLE_ENDIAN : __BIG_ENDIAN; > + return other_byte_order ? LITTLE_ENDIAN : BIG_ENDIAN; > #endif > } > > @@ -372,7 +372,7 @@ read_3ubyte_unaligned (Dwarf *dbg, const unsigned char *p) > } d; > bool other_byte_order = dbg->other_byte_order; > > - if (file_byte_order (other_byte_order) == __BIG_ENDIAN) > + if (file_byte_order (other_byte_order) == BIG_ENDIAN) > { > d.c[0] = 0x00; > d.c[1] = p[0]; > diff --git a/libdwfl/dwfl_segment_report_module.c b/libdwfl/dwfl_segment_report_module.c > index 1461ae26..28f87f10 100644 > --- a/libdwfl/dwfl_segment_report_module.c > +++ b/libdwfl/dwfl_segment_report_module.c > @@ -49,7 +49,7 @@ > > #define INITIAL_READ 1024 > > -#if __BYTE_ORDER == __LITTLE_ENDIAN > +#if BYTE_ORDER == LITTLE_ENDIAN > # define MY_ELFDATA ELFDATA2LSB > #else > # define MY_ELFDATA ELFDATA2MSB > diff --git a/libelf/common.h b/libelf/common.h > index 4561854f..9b2a856d 100644 > --- a/libelf/common.h > +++ b/libelf/common.h > @@ -151,7 +151,7 @@ libelf_release_all (Elf *elf) > : bswap_64 (Var)))) > > > -#if __BYTE_ORDER == __LITTLE_ENDIAN > +#if BYTE_ORDER == LITTLE_ENDIAN > # define MY_ELFDATA ELFDATA2LSB > #else > # define MY_ELFDATA ELFDATA2MSB > diff --git a/libelf/elf32_checksum.c b/libelf/elf32_checksum.c > index 521668a7..a47b307d 100644 > --- a/libelf/elf32_checksum.c > +++ b/libelf/elf32_checksum.c > @@ -73,9 +73,9 @@ elfw2(LIBELFBITS,checksum) (Elf *elf) > is the same. */ > ident = elf->state.ELFW(elf,LIBELFBITS).ehdr->e_ident; > same_byte_order = ((ident[EI_DATA] == ELFDATA2LSB > - && __BYTE_ORDER == __LITTLE_ENDIAN) > + && BYTE_ORDER == LITTLE_ENDIAN) > || (ident[EI_DATA] == ELFDATA2MSB > - && __BYTE_ORDER == __BIG_ENDIAN)); > + && BYTE_ORDER == BIG_ENDIAN)); > > /* If we don't have native byte order, we will likely need to > convert the data with xlate functions. We do it upfront instead > diff --git a/libelf/elf32_xlatetof.c b/libelf/elf32_xlatetof.c > index 377659c8..ab857409 100644 > --- a/libelf/elf32_xlatetof.c > +++ b/libelf/elf32_xlatetof.c > @@ -82,8 +82,8 @@ elfw2(LIBELFBITS, xlatetof) (Elf_Data *dest, const Elf_Data *src, > and vice versa since the function only has to copy and/or > change the byte order. > */ > - if ((__BYTE_ORDER == __LITTLE_ENDIAN && encode == ELFDATA2LSB) > - || (__BYTE_ORDER == __BIG_ENDIAN && encode == ELFDATA2MSB)) > + if ((BYTE_ORDER == LITTLE_ENDIAN && encode == ELFDATA2LSB) > + || (BYTE_ORDER == BIG_ENDIAN && encode == ELFDATA2MSB)) > { > /* We simply have to copy since the byte order is the same. */ > if (src->d_buf != dest->d_buf) > diff --git a/libelf/elf_getarsym.c b/libelf/elf_getarsym.c > index 2203521f..281f0c1c 100644 > --- a/libelf/elf_getarsym.c > +++ b/libelf/elf_getarsym.c > @@ -61,7 +61,7 @@ read_number_entries (uint64_t *nump, Elf *elf, size_t *offp, bool index64_p) > > *offp += w; > > - if (__BYTE_ORDER == __LITTLE_ENDIAN) > + if (BYTE_ORDER == LITTLE_ENDIAN) > *nump = index64_p ? bswap_64 (u.ret64) : bswap_32 (u.ret32); > else > *nump = index64_p ? u.ret64 : u.ret32; > @@ -266,7 +266,7 @@ elf_getarsym (Elf *elf, size_t *ptr) > if (index64_p) > { > uint64_t tmp = (*u64)[cnt]; > - if (__BYTE_ORDER == __LITTLE_ENDIAN) > + if (BYTE_ORDER == LITTLE_ENDIAN) > tmp = bswap_64 (tmp); > > arsym[cnt].as_off = tmp; > @@ -286,7 +286,7 @@ elf_getarsym (Elf *elf, size_t *ptr) > goto out; > } > } > - else if (__BYTE_ORDER == __LITTLE_ENDIAN) > + else if (BYTE_ORDER == LITTLE_ENDIAN) > arsym[cnt].as_off = bswap_32 ((*u32)[cnt]); > else > arsym[cnt].as_off = (*u32)[cnt]; > diff --git a/src/arlib.h b/src/arlib.h > index e117166e..d4a42210 100644 > --- a/src/arlib.h > +++ b/src/arlib.h > @@ -46,7 +46,7 @@ extern const struct argp_child arlib_argp_children[]; > #define AR_HDR_WORDS (sizeof (struct ar_hdr) / sizeof (uint32_t)) > > > -#if __BYTE_ORDER == __LITTLE_ENDIAN > +#if BYTE_ORDER == LITTLE_ENDIAN > # define le_bswap_32(val) bswap_32 (val) > #else > # define le_bswap_32(val) (val) > -- > 2.36.1.windows.1 > ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH 5/7] Strip __ prefix from __BYTE_ORDER __LITTLE_ENDIAN and __BIG_ENDIAN 2022-10-16 21:11 ` Mark Wielaard @ 2022-10-17 3:40 ` 罗勇刚(Yonggang Luo) 2022-10-17 8:42 ` Mark Wielaard 0 siblings, 1 reply; 26+ messages in thread From: 罗勇刚(Yonggang Luo) @ 2022-10-17 3:40 UTC (permalink / raw) To: Mark Wielaard; +Cc: elfutils-devel [-- Attachment #1: Type: text/plain, Size: 415 bytes --] On Mon, Oct 17, 2022 at 5:11 AM Mark Wielaard <mark@klomp.org> wrote: > > Hi, > > This seems to work and is probably OK. But do you know when/what the > __ prefix versions are defined and when/what defines the non-prefixed > versions? > __BYTE_ORDER__ is a predefined macro by gcc/clang, BYTE_ORDER is defined in <endian.h> -- 此致 礼 罗勇刚 Yours sincerely, Yonggang Luo ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH 5/7] Strip __ prefix from __BYTE_ORDER __LITTLE_ENDIAN and __BIG_ENDIAN 2022-10-17 3:40 ` 罗勇刚(Yonggang Luo) @ 2022-10-17 8:42 ` Mark Wielaard 0 siblings, 0 replies; 26+ messages in thread From: Mark Wielaard @ 2022-10-17 8:42 UTC (permalink / raw) To: 罗勇刚(Yonggang Luo); +Cc: elfutils-devel Hi, On Mon, Oct 17, 2022 at 11:40:11AM +0800, 罗勇刚(Yonggang Luo) wrote: > > This seems to work and is probably OK. But do you know when/what the > > __ prefix versions are defined and when/what defines the non-prefixed > > versions? > > __BYTE_ORDER__ is a predefined macro by gcc/clang, > > BYTE_ORDER is defined in <endian.h> Aha, thanks. I added that to the commit message and pushed the change. Cheers, Mark ^ permalink raw reply [flat|nested] 26+ messages in thread
* [PATCH 6/7] Fixes building with msvc/clang mingw/gcc 2022-09-20 8:43 [PATCH 0/7] Enable building libelf of elfutils on win32 Yonggang Luo ` (4 preceding siblings ...) 2022-09-20 8:43 ` [PATCH 5/7] Strip __ prefix from __BYTE_ORDER __LITTLE_ENDIAN and __BIG_ENDIAN Yonggang Luo @ 2022-09-20 8:43 ` Yonggang Luo 2022-10-16 21:21 ` Mark Wielaard 2022-09-20 8:43 ` [PATCH 7/7] Add CMake build files Yonggang Luo 6 siblings, 1 reply; 26+ messages in thread From: Yonggang Luo @ 2022-09-20 8:43 UTC (permalink / raw) To: elfutils-devel; +Cc: Yonggang Luo Signed-off-by: Yonggang Luo <luoyonggang@gmail.com> --- configure.ac | 1 + lib/system.h | 61 +++++++++++++- lib/system_win32.c | 162 ++++++++++++++++++++++++++++++++++++++ libelf/elf32_updatefile.c | 3 +- libelf/elf_begin.c | 7 +- libelf/elf_end.c | 2 + libelf/elf_update.c | 5 +- libelf/libelf.h | 6 ++ libelf/libelfP.h | 4 + libelf/win32/ar.h | 52 ++++++++++++ 10 files changed, 298 insertions(+), 5 deletions(-) create mode 100644 lib/system_win32.c create mode 100644 libelf/win32/ar.h diff --git a/configure.ac b/configure.ac index 03b67a9d..63aeb748 100644 --- a/configure.ac +++ b/configure.ac @@ -428,6 +428,7 @@ AC_CHECK_DECLS([memrchr, rawmemchr],[],[], [#define _GNU_SOURCE #include <string.h>]) AC_CHECK_DECLS([powerof2],[],[],[#include <sys/param.h>]) +AC_CHECK_DECLS([mmap],[],[],[#include <sys/mman.h>]) AC_CHECK_DECLS([mempcpy],[],[], [#define _GNU_SOURCE #include <string.h>]) diff --git a/lib/system.h b/lib/system.h index bbbe06c4..05b5cf8d 100644 --- a/lib/system.h +++ b/lib/system.h @@ -40,21 +40,78 @@ #include <stdlib.h> /* System dependend headers */ +#if !defined(_WIN32) #include <byteswap.h> #include <endian.h> -#include <sys/mman.h> +#endif + +#if defined(_MSC_VER) +#include <basetsd.h> +#include <io.h> +#include <fcntl.h> +#include <stdio.h> +#include <sys/types.h> +typedef SSIZE_T ssize_t; +#else #include <sys/param.h> #include <unistd.h> +#endif + +#if HAVE_DECL_MMAP +#include <sys/mman.h> +#endif #if defined(HAVE_ERROR_H) #include <error.h> -#elif defined(HAVE_ERR_H) +#elif defined(HAVE_ERR_H) || defined(_MSC_VER) extern int error_message_count; void error(int status, int errnum, const char *format, ...); #else #error "err.h or error.h must be available" #endif +#if defined(_MSC_VER) +#define BIG_ENDIAN 4321 +#define LITTLE_ENDIAN 1234 +#define BYTE_ORDER LITTLE_ENDIAN +static inline int ftruncate(int fd, off_t length) +{ + return _chsize_s(fd, length); +} +#endif /* defined(_MSC_VER) */ + +#if defined(_WIN32) +static inline uint16_t bswap_16(uint16_t x) { + return ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)); +} + +static inline uint32_t bswap_32(uint32_t x) { + return ( + (((x) & 0xff000000) >> 24) | (((x) & 0x00ff0000) >> 8) | + (((x) & 0x0000ff00) << 8) | (((x) & 0x000000ff) << 24) + ); +} + +static inline uint64_t bswap_64(uint64_t x) { + return ( + (((x) & 0xff00000000000000ull) >> 56) | + (((x) & 0x00ff000000000000ull) >> 40) | + (((x) & 0x0000ff0000000000ull) >> 24) | + (((x) & 0x000000ff00000000ull) >> 8) | + (((x) & 0x00000000ff000000ull) << 8) | + (((x) & 0x0000000000ff0000ull) << 24) | + (((x) & 0x000000000000ff00ull) << 40) | + (((x) & 0x00000000000000ffull) << 56) + ); +} + +#define htobe64(x) bswap_64(x) +#define be64toh(x) bswap_64(x) + +ssize_t pread(int fd, void *buf, size_t count, off_t offset); +ssize_t pwrite(int fd, const void *buf, size_t count, off_t offset); +#endif /* defined(_WIN32) */ + /* error (EXIT_FAILURE, ...) should be noreturn but on some systems it isn't. This may cause warnings about code that should not be reachable. So have an explicit error_exit wrapper that is noreturn (because it diff --git a/lib/system_win32.c b/lib/system_win32.c new file mode 100644 index 00000000..d9941cc5 --- /dev/null +++ b/lib/system_win32.c @@ -0,0 +1,162 @@ +/* Copyright (C) 2022 Yonggang Luo + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify + it under the terms of either + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at + your option) any later version + + or + + * the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at + your option) any later version + + or both in parallel, as here. + + elfutils is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received copies of the GNU General Public License and + the GNU Lesser General Public License along with this program. If + not, see <http://www.gnu.org/licenses/>. */ + +#include <errno.h> +#include "system.h" + +#include <windows.h> + +static const struct +{ + DWORD winerr; + int doserr; +} doserrors[] = + + { + {ERROR_INVALID_FUNCTION, EINVAL}, + {ERROR_FILE_NOT_FOUND, ENOENT}, + {ERROR_PATH_NOT_FOUND, ENOENT}, + {ERROR_TOO_MANY_OPEN_FILES, EMFILE}, + {ERROR_ACCESS_DENIED, EACCES}, + {ERROR_INVALID_HANDLE, EBADF}, + {ERROR_ARENA_TRASHED, ENOMEM}, + {ERROR_NOT_ENOUGH_MEMORY, ENOMEM}, + {ERROR_INVALID_BLOCK, ENOMEM}, + {ERROR_BAD_ENVIRONMENT, E2BIG}, + {ERROR_BAD_FORMAT, ENOEXEC}, + {ERROR_INVALID_ACCESS, EINVAL}, + {ERROR_INVALID_DATA, EINVAL}, + {ERROR_INVALID_DRIVE, ENOENT}, + {ERROR_CURRENT_DIRECTORY, EACCES}, + {ERROR_NOT_SAME_DEVICE, EXDEV}, + {ERROR_NO_MORE_FILES, ENOENT}, + {ERROR_LOCK_VIOLATION, EACCES}, + {ERROR_SHARING_VIOLATION, EACCES}, + {ERROR_BAD_NETPATH, ENOENT}, + {ERROR_NETWORK_ACCESS_DENIED, EACCES}, + {ERROR_BAD_NET_NAME, ENOENT}, + {ERROR_FILE_EXISTS, EEXIST}, + {ERROR_CANNOT_MAKE, EACCES}, + {ERROR_FAIL_I24, EACCES}, + {ERROR_INVALID_PARAMETER, EINVAL}, + {ERROR_NO_PROC_SLOTS, EAGAIN}, + {ERROR_DRIVE_LOCKED, EACCES}, + {ERROR_BROKEN_PIPE, EPIPE}, + {ERROR_DISK_FULL, ENOSPC}, + {ERROR_INVALID_TARGET_HANDLE, EBADF}, + {ERROR_INVALID_HANDLE, EINVAL}, + {ERROR_WAIT_NO_CHILDREN, ECHILD}, + {ERROR_CHILD_NOT_COMPLETE, ECHILD}, + {ERROR_DIRECT_ACCESS_HANDLE, EBADF}, + {ERROR_NEGATIVE_SEEK, EINVAL}, + {ERROR_SEEK_ON_DEVICE, EACCES}, + {ERROR_DIR_NOT_EMPTY, ENOTEMPTY}, + {ERROR_NOT_LOCKED, EACCES}, + {ERROR_BAD_PATHNAME, ENOENT}, + {ERROR_MAX_THRDS_REACHED, EAGAIN}, + {ERROR_LOCK_FAILED, EACCES}, + {ERROR_ALREADY_EXISTS, EEXIST}, + {ERROR_FILENAME_EXCED_RANGE, ENOENT}, + {ERROR_NESTING_NOT_ALLOWED, EAGAIN}, + {ERROR_NOT_ENOUGH_QUOTA, ENOMEM}, + {ERROR_DELETE_PENDING, ENOENT}}; + +static void +_dosmaperr(unsigned long e) +{ + int i; + + if (e == 0) + { + errno = 0; + return; + } + + for (i = 0; i < sizeof(doserrors) / sizeof(doserrors[0]); i++) + { + if (doserrors[i].winerr == e) + { + int doserr = doserrors[i].doserr; + + errno = doserr; + return; + } + } + + errno = EINVAL; +} + +ssize_t +pread(int fd, void *buf, size_t count, off_t offset) +{ + OVERLAPPED overlapped = {0}; + HANDLE h; + DWORD ret; + + h = (HANDLE)_get_osfhandle(fd); + if (h == INVALID_HANDLE_VALUE) + { + errno = EBADF; + return -1; + } + + overlapped.Offset = offset; + if (!ReadFile(h, buf, count, &ret, &overlapped)) + { + if (GetLastError() == ERROR_HANDLE_EOF) + return 0; + + _dosmaperr(GetLastError()); + return -1; + } + + return ret; +} + +ssize_t +pwrite(int fd, const void *buf, size_t count, off_t offset) +{ + OVERLAPPED overlapped = {0}; + HANDLE h; + DWORD ret; + + h = (HANDLE)_get_osfhandle(fd); + if (h == INVALID_HANDLE_VALUE) + { + errno = EBADF; + return -1; + } + + overlapped.Offset = offset; + if (!WriteFile(h, buf, count, &ret, &overlapped)) + { + _dosmaperr(GetLastError()); + return -1; + } + + return ret; +} diff --git a/libelf/elf32_updatefile.c b/libelf/elf32_updatefile.c index 46afa1f4..8229fd26 100644 --- a/libelf/elf32_updatefile.c +++ b/libelf/elf32_updatefile.c @@ -96,7 +96,7 @@ sort_sections (Elf_Scn **scns, Elf_ScnList *list) qsort (scns, scnp - scns, sizeof (*scns), compare_sections); } - +#if HAVE_DECL_MMAP static inline void fill_mmap (size_t offset, char *last_position, char *scn_start, char *const shdr_start, char *const shdr_end) @@ -482,6 +482,7 @@ __elfw2(LIBELFBITS,updatemmap) (Elf *elf, int change_bo, size_t shnum) return 0; } +#endif /* Size of the buffer we use to generate the blocks of fill bytes. */ diff --git a/libelf/elf_begin.c b/libelf/elf_begin.c index fe8c640a..d867cd6f 100644 --- a/libelf/elf_begin.c +++ b/libelf/elf_begin.c @@ -645,10 +645,12 @@ static struct Elf * read_file (int fildes, int64_t offset, size_t maxsize, Elf_Cmd cmd, Elf *parent) { +#if HAVE_DECL_MMAP void *map_address = NULL; int use_mmap = (cmd == ELF_C_READ_MMAP || cmd == ELF_C_RDWR_MMAP || cmd == ELF_C_WRITE_MMAP || cmd == ELF_C_READ_MMAP_PRIVATE); +#endif if (parent == NULL) { @@ -669,7 +671,7 @@ read_file (int fildes, int64_t offset, size_t maxsize, /* The parent is already loaded. Use it. */ assert (maxsize != ~((size_t) 0)); } - +#if HAVE_DECL_MMAP if (use_mmap) { if (parent == NULL) @@ -713,6 +715,7 @@ read_file (int fildes, int64_t offset, size_t maxsize, return result; } +#endif /* Otherwise we have to do it the hard way. We read as much as necessary from the file whenever we need information which is not available. */ @@ -1160,12 +1163,14 @@ elf_begin (int fildes, Elf_Cmd cmd, Elf *ref) if (ref != NULL) /* Make sure the descriptor is not suddenly going away. */ rwlock_rdlock (ref->lock); +#if defined(F_GETFD) else if (unlikely (fcntl (fildes, F_GETFD) == -1 && errno == EBADF)) { /* We cannot do anything productive without a file descriptor. */ __libelf_seterrno (ELF_E_INVALID_FILE); return NULL; } +#endif switch (cmd) { diff --git a/libelf/elf_end.c b/libelf/elf_end.c index 5c451f36..8023b216 100644 --- a/libelf/elf_end.c +++ b/libelf/elf_end.c @@ -222,8 +222,10 @@ elf_end (Elf *elf) /* The file was read or mapped for this descriptor. */ if ((elf->flags & ELF_F_MALLOCED) != 0) free (elf->map_address); +#if HAVE_DECL_MMAP else if ((elf->flags & ELF_F_MMAPPED) != 0) munmap (elf->map_address, elf->maximum_size); +#endif } rwlock_unlock (elf->lock); diff --git a/libelf/elf_update.c b/libelf/elf_update.c index 56af3a1c..e81eb6c9 100644 --- a/libelf/elf_update.c +++ b/libelf/elf_update.c @@ -64,7 +64,7 @@ write_file (Elf *elf, int64_t size, int change_bo, size_t shnum) __libelf_seterrno (ELF_E_WRITE_ERROR); return -1; } - +#if HAVE_DECL_MMAP /* Try to map the file if this isn't done yet. */ if (elf->map_address == NULL && elf->cmd == ELF_C_WRITE_MMAP) { @@ -125,6 +125,7 @@ write_file (Elf *elf, int64_t size, int change_bo, size_t shnum) size = -1; } else +#endif { /* The file is not mmaped. */ if ((class == ELFCLASS32 @@ -145,6 +146,7 @@ write_file (Elf *elf, int64_t size, int change_bo, size_t shnum) size = -1; } +#if HAVE_DECL_MMAP /* POSIX says that ftruncate and write may clear the S_ISUID and S_ISGID mode bits. So make sure we restore them afterwards if they were set. This is not atomic if someone else chmod's the file while we operate. */ @@ -156,6 +158,7 @@ write_file (Elf *elf, int64_t size, int change_bo, size_t shnum) __libelf_seterrno (ELF_E_WRITE_ERROR); size = -1; } +#endif if (size != -1 && elf->parent == NULL) elf->maximum_size = size; diff --git a/libelf/libelf.h b/libelf/libelf.h index a139e733..2fa3838b 100644 --- a/libelf/libelf.h +++ b/libelf/libelf.h @@ -195,9 +195,15 @@ typedef struct { char *ar_name; /* Name of archive member. */ time_t ar_date; /* File date. */ +#if defined(_WIN32) + long ar_uid; + long ar_gid; + unsigned long ar_mode; +#else uid_t ar_uid; /* User ID. */ gid_t ar_gid; /* Group ID. */ mode_t ar_mode; /* File mode. */ +#endif int64_t ar_size; /* File size. */ char *ar_rawname; /* Original name of archive member. */ } Elf_Arhdr; diff --git a/libelf/libelfP.h b/libelf/libelfP.h index d88a613c..14b60bce 100644 --- a/libelf/libelfP.h +++ b/libelf/libelfP.h @@ -30,7 +30,11 @@ #ifndef _LIBELFP_H #define _LIBELFP_H 1 +#if defined(_WIN32) +#include "win32/ar.h" +#else #include <ar.h> +#endif #include <gelf.h> #include <errno.h> diff --git a/libelf/win32/ar.h b/libelf/win32/ar.h new file mode 100644 index 00000000..d67fab52 --- /dev/null +++ b/libelf/win32/ar.h @@ -0,0 +1,52 @@ +/* Copyright (C) 2022 Yonggang Luo + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify + it under the terms of either + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at + your option) any later version + + or + + * the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at + your option) any later version + + or both in parallel, as here. + + elfutils is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received copies of the GNU General Public License and + the GNU Lesser General Public License along with this program. If + not, see <http://www.gnu.org/licenses/>. */ + +#ifndef _AR_H +#define _AR_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define ARMAG "!<arch>\n" +#define SARMAG 8 +#define ARFMAG "`\n" + +struct ar_hdr { + char ar_name[16]; + char ar_date[12]; + char ar_uid[6], ar_gid[6]; + char ar_mode[8]; + char ar_size[10]; + char ar_fmag[2]; +}; + +#ifdef __cplusplus +} +#endif + +#endif -- 2.36.1.windows.1 ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH 6/7] Fixes building with msvc/clang mingw/gcc 2022-09-20 8:43 ` [PATCH 6/7] Fixes building with msvc/clang mingw/gcc Yonggang Luo @ 2022-10-16 21:21 ` Mark Wielaard 2022-12-16 21:12 ` 罗勇刚(Yonggang Luo) 0 siblings, 1 reply; 26+ messages in thread From: Mark Wielaard @ 2022-10-16 21:21 UTC (permalink / raw) To: Yonggang Luo; +Cc: elfutils-devel Hi, I find this hard to review. I have no experienc with msvc and don't know when/what _MSC_VER implies or how to verify system_win32.c. I am also a bit worried that the various ifdefs will be hard to keep correct. If we don't have HAVE_DECL_MMAP does the testsuite still work? Maybe this patch can be split up is separate concerns. But I have to admit I am a litle afraid this will be hard to keep working. Cheers, Mark ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH 6/7] Fixes building with msvc/clang mingw/gcc 2022-10-16 21:21 ` Mark Wielaard @ 2022-12-16 21:12 ` 罗勇刚(Yonggang Luo) 0 siblings, 0 replies; 26+ messages in thread From: 罗勇刚(Yonggang Luo) @ 2022-12-16 21:12 UTC (permalink / raw) To: Mark Wielaard; +Cc: elfutils-devel [-- Attachment #1: Type: text/plain, Size: 721 bytes --] I am not able running test-suite on windows yet, just getting it compiled at the very first step On Mon, Oct 17, 2022 at 5:21 AM Mark Wielaard <mark@klomp.org> wrote: > > Hi, > > I find this hard to review. I have no experienc with msvc and don't > know when/what _MSC_VER implies or how to verify system_win32.c. I am > also a bit worried that the various ifdefs will be hard to keep > correct. > > If we don't have HAVE_DECL_MMAP does the testsuite still work? > > Maybe this patch can be split up is separate concerns. But I have to > admit I am a litle afraid this will be hard to keep working. > > Cheers, > > Mark -- 此致 礼 罗勇刚 Yours sincerely, Yonggang Luo ^ permalink raw reply [flat|nested] 26+ messages in thread
* [PATCH 7/7] Add CMake build files 2022-09-20 8:43 [PATCH 0/7] Enable building libelf of elfutils on win32 Yonggang Luo ` (5 preceding siblings ...) 2022-09-20 8:43 ` [PATCH 6/7] Fixes building with msvc/clang mingw/gcc Yonggang Luo @ 2022-09-20 8:43 ` Yonggang Luo 2022-10-16 21:23 ` Mark Wielaard 6 siblings, 1 reply; 26+ messages in thread From: Yonggang Luo @ 2022-09-20 8:43 UTC (permalink / raw) To: elfutils-devel; +Cc: Yonggang Luo Signed-off-by: Yonggang Luo <luoyonggang@gmail.com> --- .gitignore | 1 + CMakeLists.txt | 47 +++++++++ libelf/CMakeLists.txt | 192 +++++++++++++++++++++++++++++++++++ libelf/config-cmake/config.h | 27 +++++ 4 files changed, 267 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 libelf/CMakeLists.txt create mode 100644 libelf/config-cmake/config.h diff --git a/.gitignore b/.gitignore index 8bcd88d7..ca06dddd 100644 --- a/.gitignore +++ b/.gitignore @@ -21,6 +21,7 @@ Makefile.in /INSTALL /aclocal.m4 /autom4te.* +/build /config.cache /config.h /config.h.in diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..11ad5c13 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,47 @@ +# Copyright (C) 2022 Yonggang Luo +# This file is part of elfutils. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# elfutils is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +cmake_minimum_required(VERSION 3.16) +project(libelf + LANGUAGES C + VERSION 0.187 +) + +add_subdirectory(libelf) + +include(GNUInstallDirs) + +if (LIBELF_INSTALL) + # Install the targets + install(TARGETS elf + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/libelf + ) + set(VERSION ${CMAKE_PROJECT_VERSION}) + set(prefix ${CMAKE_INSTALL_PREFIX}) + set(exec_prefix "\${prefix}") + set(libdir "\${exec_prefix}/lib") + set(includedir "\${prefix}/include/libelf") + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/config/libelf.pc.in + ${CMAKE_CURRENT_BINARY_DIR}/libelf.pc + @ONLY + ) + install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/libelf.pc + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig + ) +endif() diff --git a/libelf/CMakeLists.txt b/libelf/CMakeLists.txt new file mode 100644 index 00000000..dc8f9291 --- /dev/null +++ b/libelf/CMakeLists.txt @@ -0,0 +1,192 @@ +# Copyright (C) 2022 Yonggang Luo +# This file is part of elfutils. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# elfutils is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +add_library(elf + elf_begin.c + elf_clone.c + elf_cntl.c + elf_compress_gnu.c + elf_compress.c + elf_end.c + elf_error.c + elf_fill.c + elf_flagdata.c + elf_flagehdr.c + elf_flagelf.c + elf_flagphdr.c + elf_flagscn.c + elf_flagshdr.c + elf_getarhdr.c + elf_getaroff.c + elf_getarsym.c + elf_getbase.c + elf_getdata_rawchunk.c + elf_getdata.c + elf_getident.c + elf_getphdrnum.c + elf_getscn.c + elf_getshdrnum.c + elf_getshdrstrndx.c + elf_gnu_hash.c + elf_hash.c + elf_kind.c + elf_memory.c + elf_ndxscn.c + elf_newdata.c + elf_newscn.c + elf_next.c + elf_nextscn.c + elf_rand.c + elf_rawdata.c + elf_rawfile.c + elf_readall.c + elf_scnshndx.c + elf_strptr.c + elf_update.c + elf_version.c + elf32_checksum.c + elf32_fsize.c + elf32_getchdr.c + elf32_getehdr.c + elf32_getphdr.c + elf32_getshdr.c + elf32_newehdr.c + elf32_newphdr.c + elf32_offscn.c + elf32_updatefile.c + elf32_updatenull.c + elf32_xlatetof.c + elf32_xlatetom.c + elf64_checksum.c + elf64_fsize.c + elf64_getchdr.c + elf64_getehdr.c + elf64_getphdr.c + elf64_getshdr.c + elf64_newehdr.c + elf64_newphdr.c + elf64_offscn.c + elf64_updatefile.c + elf64_updatenull.c + elf64_xlatetof.c + elf64_xlatetom.c + gelf_checksum.c + gelf_fsize.c + gelf_getauxv.c + gelf_getchdr.c + gelf_getclass.c + gelf_getdyn.c + gelf_getehdr.c + gelf_getlib.c + gelf_getmove.c + gelf_getnote.c + gelf_getphdr.c + gelf_getrel.c + gelf_getrela.c + gelf_getshdr.c + gelf_getsym.c + gelf_getsyminfo.c + gelf_getsymshndx.c + gelf_getverdaux.c + gelf_getverdef.c + gelf_getvernaux.c + gelf_getverneed.c + gelf_getversym.c + gelf_newehdr.c + gelf_newphdr.c + gelf_offscn.c + gelf_update_auxv.c + gelf_update_dyn.c + gelf_update_ehdr.c + gelf_update_lib.c + gelf_update_move.c + gelf_update_phdr.c + gelf_update_rel.c + gelf_update_rela.c + gelf_update_shdr.c + gelf_update_sym.c + gelf_update_syminfo.c + gelf_update_symshndx.c + gelf_update_verdaux.c + gelf_update_verdef.c + gelf_update_vernaux.c + gelf_update_verneed.c + gelf_update_versym.c + gelf_xlate.c + gelf_xlatetof.c + gelf_xlatetom.c + libelf_crc32.c + libelf_next_prime.c + nlist.c +) +if(WIN32) + target_sources( + elf PRIVATE + ../lib/system_win32.c + ) +endif() +set(ELF_PUBLIC_HEADERS + ${CMAKE_CURRENT_SOURCE_DIR}/gelf.h + ${CMAKE_CURRENT_SOURCE_DIR}/libelf.h + ${CMAKE_CURRENT_SOURCE_DIR}/nlist.h + ${CMAKE_CURRENT_SOURCE_DIR}/elf.h +) +set_target_properties( + elf PROPERTIES PUBLIC_HEADER + "${ELF_PUBLIC_HEADERS}" +) +target_include_directories( + elf PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/../lib + ${CMAKE_CURRENT_SOURCE_DIR}/ + ${CMAKE_CURRENT_SOURCE_DIR}/config-cmake +) +target_compile_definitions( + elf PRIVATE + -DHAVE_CONFIG_H +) +if (MSVC) + target_compile_definitions( + elf PRIVATE + -D_CRT_NONSTDC_NO_DEPRECATE + -D_CRT_SECURE_NO_WARNINGS + -D_CRT_SECURE_NO_WARNINGS_GLOBALS + ) +else() + target_compile_definitions( + elf PRIVATE + -D_FILE_OFFSET_BITS=64 + ) +endif() +set_property(TARGET elf PROPERTY C_STANDARD 11) + +if (MSVC) + # Enable find libz.a with msvc + set(CMAKE_FIND_LIBRARY_PREFIXES "" "lib") + set(CMAKE_FIND_LIBRARY_SUFFIXES ".lib" ".a") +endif() +find_package(ZLIB REQUIRED) +target_link_libraries(elf ZLIB::ZLIB) + +find_package(Intl) +if (TARGET Intl::Intl) + target_link_libraries(elf Intl::Intl) +else() + target_compile_definitions( + elf PRIVATE + -DNOT_HAVE_LIBINTL + ) +endif() diff --git a/libelf/config-cmake/config.h b/libelf/config-cmake/config.h new file mode 100644 index 00000000..25f1da57 --- /dev/null +++ b/libelf/config-cmake/config.h @@ -0,0 +1,27 @@ +#ifndef _CONFIG_H_ +#define _GNU_SOURCE +#include "eu-config.h" + +#if defined(_WIN32) +#define HAVE_DECL_MEMPCPY 0 +#define HAVE_DECL_MEMRCHR 0 +#define HAVE_DECL_POWEROF2 0 +#define HAVE_DECL_MMAP 0 +#else +#define HAVE_DECL_MEMPCPY 1 +#define HAVE_DECL_MEMRCHR 1 +#define HAVE_DECL_POWEROF2 1 +#define HAVE_DECL_MMAP 1 +#endif +#define HAVE_DECL_RAWMEMCHR 0 +#define HAVE_DECL_REALLOCARRAY 1 +#define HAVE_VISIBILITY 1 + +#undef HAVE_GCC_STRUCT +#undef USE_LOCKS + +#if !defined(_MSC_VER) +#define HAVE_ERROR_H +#endif + +#endif /* _CONFIG_H_ */ \ No newline at end of file -- 2.36.1.windows.1 ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH 7/7] Add CMake build files 2022-09-20 8:43 ` [PATCH 7/7] Add CMake build files Yonggang Luo @ 2022-10-16 21:23 ` Mark Wielaard 2022-12-16 21:12 ` 罗勇刚(Yonggang Luo) 0 siblings, 1 reply; 26+ messages in thread From: Mark Wielaard @ 2022-10-16 21:23 UTC (permalink / raw) To: Yonggang Luo; +Cc: elfutils-devel Hi, I rather not have multiple build systems in the tree. Are the autotools not available on your system? Cheers, Mark ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH 7/7] Add CMake build files 2022-10-16 21:23 ` Mark Wielaard @ 2022-12-16 21:12 ` 罗勇刚(Yonggang Luo) 0 siblings, 0 replies; 26+ messages in thread From: 罗勇刚(Yonggang Luo) @ 2022-12-16 21:12 UTC (permalink / raw) To: Mark Wielaard; +Cc: elfutils-devel [-- Attachment #1: Type: text/plain, Size: 380 bytes --] Using cmake building with msvc-clang will be easier, anyway I'll drop it first On Mon, Oct 17, 2022 at 5:23 AM Mark Wielaard <mark@klomp.org> wrote: > > Hi, > > I rather not have multiple build systems in the tree. Are the > autotools not available on your system? > > Cheers, > > Mark -- 此致 礼 罗勇刚 Yours sincerely, Yonggang Luo ^ permalink raw reply [flat|nested] 26+ messages in thread
end of thread, other threads:[~2022-12-16 21:13 UTC | newest] Thread overview: 26+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-09-20 8:43 [PATCH 0/7] Enable building libelf of elfutils on win32 Yonggang Luo 2022-09-20 8:43 ` [PATCH 1/7] Rename 'hello2.spec.' -> 'hello2.spec' 'hello3.spec.' -> 'hello3.spec' Yonggang Luo 2022-10-14 20:35 ` Mark Wielaard 2022-10-19 18:45 ` 罗勇刚(Yonggang Luo) 2022-10-19 19:49 ` Frank Ch. Eigler 2022-10-19 21:23 ` 罗勇刚(Yonggang Luo) 2022-10-19 21:27 ` 罗勇刚(Yonggang Luo) 2022-10-21 15:45 ` Frank Ch. Eigler 2022-10-20 16:07 ` Mark Wielaard 2022-10-31 13:29 ` Mark Wielaard 2022-11-24 8:27 ` 罗勇刚(Yonggang Luo) 2022-09-20 8:43 ` [PATCH 2/7] move platform depended include into system.h Yonggang Luo 2022-10-14 21:16 ` Mark Wielaard 2022-10-15 17:01 ` 罗勇刚(Yonggang Luo) 2022-09-20 8:43 ` [PATCH 3/7] lib: Use NOT_HAVE_LIBINTL to guard if need #include <libintl.h> Yonggang Luo 2022-09-20 8:43 ` [PATCH 4/7] Remove duplicated " Yonggang Luo 2022-09-20 8:43 ` [PATCH 5/7] Strip __ prefix from __BYTE_ORDER __LITTLE_ENDIAN and __BIG_ENDIAN Yonggang Luo 2022-10-16 21:11 ` Mark Wielaard 2022-10-17 3:40 ` 罗勇刚(Yonggang Luo) 2022-10-17 8:42 ` Mark Wielaard 2022-09-20 8:43 ` [PATCH 6/7] Fixes building with msvc/clang mingw/gcc Yonggang Luo 2022-10-16 21:21 ` Mark Wielaard 2022-12-16 21:12 ` 罗勇刚(Yonggang Luo) 2022-09-20 8:43 ` [PATCH 7/7] Add CMake build files Yonggang Luo 2022-10-16 21:23 ` Mark Wielaard 2022-12-16 21:12 ` 罗勇刚(Yonggang Luo)
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).