Commit Graph

41 Commits

Author SHA1 Message Date
Yann E. MORIN
3481674ee3 package/dmalloc: don't use SSP
dmalloc directly calls into $(LD) to generate a shared library our of
the static one.

To detect what command it should run, ./configure tries various
incantations of ld with various command line options until one does not
fail. One of those is (basically):
    $(LD) --whole-archive -o contest.o.t contest.a

This makes ./configure conclude what the command to link a shared
library in the Makefile should be, and thus stores that in a variable:
    shlinkargs='$(LD) --whole-archive -o $@'

... which is then AC_SUBST()ed into Makefile.in with a rule like:

    $(SHLIB): $(LIBRARY)
        @shlinkargs@ $(LIRARY)

which once substiuted, gives:

    $(SHLIB): $(LIBRARY)
        $(LD) --whole-archive -o $@ $(LIRARY)

However, when SSP is enabled, the __stack_chk_fail_local and co symbols
are provided by additional libraries or object files, and that is the
responsibility of gcc to pass those when linking. But as dmalloc
directly calls ld, it misses those.

Changing dmalloc to use $(CC) is not trivial, however.

First, we can't pass LD=$(TARGET_CC), otherwise the whole package
explodes [0]: indeed --whole-archive is unknown to gcc, so it must be
passed as -Wl,--whole archive instead. So we'd need to add a new test
that uses $(CC), like so:
    $(CC) -Wl,--whole-archive -o contest.o.t contest.a

However, in that case, gcc does pass additional libs/objs (like, for
eample, the SSP ones) to the linker. But then those are also included
in the whole-archive section. This causes the linker to add all the
symbols form those libs/objs, even those not needed for SSP; on some
archs, like PPC, that may require floating point symbols (__muldiv3 et
al.) which are in another library, and thus the linker can't find them.

The proper solution wouild be to add -Wl,--no-whole-archive, but that
would have to be added _after_ the library we want to link, i.e.e we
should be able to evntually run:

    $(CC) -Wl,--whole-archive -o $@ $(LIRARY) -Wl,--no-whole-archive

That would require that we introduce a new variable that is added
_after_ the $(LIBRARY), e.g. @shlinkargs_post@ or so...

This is a bigger endeavour than we want to pursue...

Since dmalloc is a debugging utility, it is not supposed to go into
production builds, and during debugging, it would not be surprising that
it needs to poke around arrays to debug them.

So, we go the easier route: disable SSP altogether.

[0] with lots of nice colors, but that's not the point, is it?

Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Cc: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2023-02-15 22:46:35 +01:00
Yann E. MORIN
b259dac22a package/dmalloc: use actual patches rather than sed-ing
Our dmalloc packaging is very old and carries historical baggage and
idiosyncracies that we have long stopped doing in the rest ofthe code
base.

Drop our post-patch hooks that seds the configure and Makefile.in files,
and add patches (that could be upstreamed one day).

We provide the results in the environment, like would be done with
actual autoconf cache variables (ac_cv_*).

Note: those are the result of cleaning up for further patches that did
not manifest because it was too complex to add proper SSP support to
dmalloc (instead, we're going to forcibly disable it in the following
commit).

Note-2: those patches have not been submitted upstream, as it's mostly
dead: even though there's been some commit activities recently-ish, there
has been no review or comments or the many PR pending for many years
now.

Note-3: we patch both configure and configure.ac, rather than
autoreconf, for two reasons: 1. the both are in the upstream git tree,
so submitting these patches would require patching both, and 2. dmalloc
does not autoreconf nicely out of the box, and it was deemed too much
hassle to fix that in addition.

Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Cc: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2023-02-15 22:45:44 +01:00
Fabrice Fontaine
dcf695206e package/dmalloc: fix strndup detection
Fix strndup detection as already done for strdup in commit
f9287b263f to avoid the following build
failure raised since bump to version 5.6.5 in commit
736932c715:

In file included from /nvmedata/autobuild/instance-0/output-1/host/mipsel-buildroot-linux-gnu/sysroot/usr/include/string.h:630:0,
                 from append.c:34:
dmalloc.h:396:7: error: expected identifier or '(' before '__extension__'
 char *strndup(const char *string, const DMALLOC_SIZE max_len);
       ^

Fixes:
 - http://autobuild.buildroot.org/results/2164dac43e2607a3570e8f98957a70f579d06cd3

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
2022-06-12 22:22:19 +02:00
Fabrice Fontaine
f9287b263f package/dmalloc: fix strdup detection
Fix the following build failure raised since bump to version 5.6.5 in
commit 736932c715:

In file included from /home/buildroot/autobuild/instance-0/output-1/host/arm-buildroot-linux-gnueabi/sysroot/usr/include/string.h:631:0,
                 from arg_check.c:31:
dmalloc.h:377:7: error: expected identifier or '(' before '__extension__'
 char *strdup(const char *string);
       ^

This build failure is raised because 0004-fix-strdup.patch was wrongly
removed and because configure.ac wrongly assumes that strdup macro is
not available when cross-compiling

As configure.ac can't be patched because autoreconf is not working,
patch configure as already done in DMALLOC_POST_PATCH. An upstream patch
on configure.ac will be sent as soon as upstream merges this old PR:
https://github.com/j256/dmalloc/pull/44

Fixes:
 - http://autobuild.buildroot.org/results/00565c4b0618ea5f553d8c22284637b6574e4a93

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
2021-12-12 14:41:03 +01:00
Fabrice Fontaine
736932c715 package/dmalloc: bump to version 5.6.5
- Drop second to fifth patches (already in version)
- License is ISC since version 5.6.2 and
  eda734a8ba
- Update indentation in hash file (two spaces)

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2021-12-05 11:10:10 +01:00
Fabrice Fontaine
68b5b3fbf0 package/dmalloc: fix static build
Build of dmalloc is broken since commit
19ec872f16 because --enable-shlib is
unconditionally set

Fixes:
 - http://autobuild.buildroot.org/results/62c9c6aebca60649bd6f635125507bf10d63fc05

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
2021-05-15 18:09:29 +02:00
Fabrice Fontaine
19ec872f16 package/dmalloc: needs -fPIC
Drop first patch and pass -fPIC to configure to fix the following build
failure on ARC:

ERROR: architecture for "/usr/lib/libdmalloc.so" is "ARCompact", should be "ARCv2"
ERROR: architecture for "/usr/lib/libdmallocth.so" is "ARCompact", should be "ARCv2"
ERROR: architecture for "/usr/lib/libdmallocthcxx.so" is "ARCompact", should be "ARCv2"
ERROR: architecture for "/usr/lib/libdmallocxx.so" is "ARCompact", should be "ARCv2"

This build failure is due to the following configure error:

checking shared library link args... ./configure: line 4467: 10229 Segmentation fault      ( ${LD-ld} -shared --whole-archive -soname conftest.so -o conftest.so.t conftest.a ) 2>&5
/home/buildroot/autobuild/run/instance-0/output-1/host/bin/arc-buildroot-linux-gnu-ld -G -o $@.t

This configure error is due to missing -fPIC:

configure:4392: checking shared library link args
configure:4398: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/arc-buildroot-linux-gnu-gcc -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -Os -g2  -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4404: $? = 0
configure:4408: test -z
			 || test ! -s conftest.err
configure:4411: $? = 0
configure:4414: test -s conftest.o
configure:4417: $? = 0
/home/buildroot/autobuild/run/instance-0/output-1/host/bin/arc-buildroot-linux-gnu-ld: conftest.a(conftest.o): relocation R_ARC_32_ME against `__stack_chk_guard' can not be used when making a shared object; recompile with -fPIC
/home/buildroot/autobuild/run/instance-0/output-1/host/bin/arc-buildroot-linux-gnu-ld: BFD (GNU Binutils) 2.33.50.20191002 assertion fail elf32-arc.c:1805
/home/buildroot/autobuild/run/instance-0/output-1/host/bin/arc-buildroot-linux-gnu-ld: unrecognized option '-all'
/home/buildroot/autobuild/run/instance-0/output-1/host/bin/arc-buildroot-linux-gnu-ld: use the --help option for usage information
configure:4475: result: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/arc-buildroot-linux-gnu-ld -G -o $@.t

Fixes:
 - http://autobuild.buildroot.org/results/65677d889c27649e1f3ca1f3b6c70df7c89779f6

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
2021-05-01 15:04:30 +02:00
Giulio Benetti
4d8e5be0b4 package/dmalloc: re-enable package on microblaze
Building dmalloc on Microblaze with optimization enabled and gcc < 8.x
fails with:

  Error: operation combines symbols in different segments

This is due to gcc bug 63261 (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63261).

To avoid this, the dmalloc package has a !BR2_microblaze
dependency. However, gcc bug 63261 only triggers when optimization is
enabled, so we can work around the issue by passing -O0, which is what
we do in other Buildroot packages to work around this bug.

So, this commit passes -O0 when BR2_TOOLCHAIN_HAS_GCC_BUG_63261, and
re-enables dmalloc on Microblaze.

Signed-off-by: Giulio Benetti <giulio.benetti@micronovasrl.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2019-06-22 19:50:21 +02:00
Gustavo Zacarias
16473dde4c dmalloc: use $(TARGET_MAKE_ENV) when calling $(MAKE)
Signed-off-by: Gustavo Zacarias <gustavo.zacarias@free-electrons.com>
Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2016-10-22 15:19:24 +02:00
Waldemar Brodkorb
b851be9bdc dmalloc: fix static build
For example coldfire uses FLAT binaries, which are statically
build. Fixes following autobuild failure:
http://autobuild.buildroot.net/results/cc4233a4c3f92275a4071c172330c920c35219ca/

Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
[Thomas: use an intermediate variable rather than duplicating code.]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2016-07-02 15:54:43 +02:00
Richard Genoud
88f3034651 dmalloc: Force arm mode instead of Thumb1 mode
dmalloc has some assembly that doesn't exist in thumb1 mode.
So, force arm mode for dmalloc.

Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2015-01-25 20:30:18 +01:00
Alex Suykov
db7b7fe0ee dmalloc: bump version to 5.5.2
Signed-off-by: Alex Suykov <alex.suykov@gmail.com>
Tested-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2015-01-07 22:56:54 +01:00
Thomas De Schampheleire
aaffd209fa packages: rename FOO_CONF_OPT into FOO_CONF_OPTS
To be consistent with the recent change of FOO_MAKE_OPT into FOO_MAKE_OPTS,
make the same change for FOO_CONF_OPT.

Sed command used:
   find * -type f | xargs sed -i 's#_CONF_OPT\>#&S#g'

Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2014-10-04 18:54:16 +02:00
Thomas De Schampheleire
3d86d29bf0 packages: remove package clean commands
Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2013-12-08 19:42:34 +01:00
Alexandre Belloni
8dfd59d114 Normalize separator size to 80
Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2013-06-06 22:30:24 +02:00
Reuben Dowle
93e5c7d9f2 dmalloc: Stop libdmalloc*.so files from being deleted from staging directory
Fix libdmalloc*.so files being deleted from the staging directory as the
package is installed into the target.

Signed-off-by: Reuben Dowle <reuben.dowle at 4rf.com>
2013-05-04 22:39:16 +02:00
Thomas Petazzoni
0e4d25ff0f packages: remove all := signs
Finally get rid of all := used for variable definitions in packages,
as we suggest in our manual and during the review of new packages.

While I was at it, I also sometimes added a few missing new lines
between the header and the first variable definition.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2013-01-20 20:49:02 +01:00
Arnout Vandecappelle (Essensium/Mind)
6737b052b2 dmalloc: add license info
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2012-11-14 22:32:10 +01:00
Arnout Vandecappelle (Essensium/Mind)
e1502ebc0c all packages: rename XXXTARGETS to xxx-package
Also remove the redundant $(call ...).

This is a purely mechanical change, performed with
find package linux toolchain boot -name \*.mk | \
  xargs sed -i -e 's/$(eval $(call GENTARGETS))/$(eval $(generic-package))/' \
               -e 's/$(eval $(call AUTOTARGETS))/$(eval $(autotools-package))/' \
               -e 's/$(eval $(call CMAKETARGETS))/$(eval $(cmake-package))/'

Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2012-07-17 20:23:05 +02:00
Will Newton
a4e27b1160 dmalloc: Fix install path for headers and info files.
Signed-off-by: Will Newton <will.newton@imgtec.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2012-01-30 00:07:35 +01:00
Thomas Petazzoni
300f9c9c9d package: remove useless arguments from AUTOTARGETS
Thanks to the pkgparentdir and pkgname functions, we can rewrite the
AUTOTARGETS macro in a way that avoids the need for each package to
repeat its name and the directory in which it is present.

[Peter: pkgdir->pkgparentdir]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-09-29 23:12:27 +02:00
Thomas Petazzoni
9eaad202f1 toolchain: rework thread options
The selection of linuxthreads, linuxthreads old or NPTL doesn't make a
lot of sense for external toolchains. So, instead, we :

 * Introduce an hidden BR2_TOOLCHAIN_HAS_THREADS option, which must be
   selected by toolchain specific options when thread support is
   available. Package needing to test thread support should use this
   option.

 * Move the none/linuxthreads/linuxthreads old/NPTL selection to
   Buildroot internal toolchain configuration.

 * Add an option in external toolchain to tell if thread support is
   available or not in the external toolchain. We assume that glibc
   without threads is not possible, as Ulrich Drepper said in
   http://sourceware.org/ml/libc-alpha/2005-08/msg00091.html

ffmpeg, dmalloc and openvpn are fixed to use the new
BR2_TOOLCHAIN_HAS_THREADS option. For openvpn, --enable-threads=posix
is no longer used, as the configure script doesn't even understand
this option.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2010-12-13 22:26:41 +01:00
cmchao
c4c8b25467 dmalloc : convert to autotools infrastructure
Changes by Thomas Petazzoni <thomas.petazzoni@free-electrons.com>

     * Target installation is the default behaviour
     * No installation to staging is the default behaviour
     * Remove DMALLOC_TARGET_BINARY variable

Signed-off-by: cmchao <cmchao@gmail.com>
2010-06-24 13:51:06 +02:00
Peter Korsgaard
3fdf0bffb8 buildroot: silence ./configure step when building with 'make -s'
We have been passing -q to ./configure when using 'make -s' for
packages using Makefile.autotools.in for some time. Do the same
for packages using autotools, but not using the
Makefile.autotools.in infrastructure, taking care to not do it
for packages with hand written configure scripts.

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2009-10-01 21:24:42 +02:00
Will Newton
422ce6536b package: Remove unnecessary dependencies on uclibc.
A C library will have been built by the toolchain makefiles, so there is no
need for packages to explicitly depend on uclibc.

Signed-off-by: Will Newton <will.newton@gmail.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2009-09-03 20:22:38 +02:00
Peter Korsgaard
4a7bfd2775 package/: convert to DOWNLOAD helper 2009-01-16 11:42:52 +00:00
Peter Korsgaard
ac1d92c425 package/: get rid of unneeded $(strip ..) 2008-12-08 08:15:27 +00:00
Peter Korsgaard
dfe689229d buildroot: cleanup <package>-clean targets.
Based on input from Arndt Kritzner & Bernhard Fischer.
2008-03-27 15:42:42 +00:00
Bernhard Reutner-Fischer
14a71561a3 - just use the strip binary to avoid confusing libtool (quotes)
- use $(STRIPCMD) in packages to avoid clashes with $(STRIP)
2007-10-01 16:15:31 +00:00
Bernhard Reutner-Fischer
6547bced93 - global whitespace trimming 2007-08-22 12:35:41 +00:00
Bernhard Reutner-Fischer
6c6cb06709 - sed -i -e "/;$/s/;$//g" $(egrep ";$" package/* package/*/*.mk toolchain/* toolchain/*/*.mk */Makefile.in -l) 2007-08-21 19:20:18 +00:00
Ulf Samuelsson
e4ead9c13c Remove switches if sstrip is run 2007-08-21 01:53:57 +00:00
Ulf Samuelsson
a2e5113512 Use STAGING_DIR/usr/lib instead of STAGING_DIR/lib 2007-08-11 22:26:56 +00:00
Ulf Samuelsson
e1621a4a2a Use <package>_VERSION in all <package>.mk instead of <package>_VER 2007-07-11 14:06:06 +00:00
"Steven J. Hill"
9a4ca08e5f Remove usage of TARGET_LDFLAGS all together. Both TARGET_CFLAGS and TARGET_LDFLAGS are passed with the compilers and linker respectively so that we can pass CFLAGS and LDFLAGS on a per-package basis which was not possible previously and a number of packages failed to build. TARGET_CFLAGS usage in package makefiles will be removed next. 2007-07-06 04:26:32 +00:00
Bernhard Reutner-Fischer
74d518dc2a - add endian handling, mmap, memcmp checks to TARGET_CONFIGURE_ARGS
- use TARGET_CONFIGURE_ARGS where appropriate.
2007-06-27 12:01:27 +00:00
Eric Andersen
85d7f6f05f fixup package LDFLAGS handling 2007-03-13 22:59:59 +00:00
Bernhard Reutner-Fischer
0ea07a9487 - dmalloc attempted to install itself to /
- make certain features dependant on the respective BR2 settings.
2007-01-20 20:54:05 +00:00
Eric Andersen
732d94d25f fixup a whole steaming pile of insanity. When packages are configured,
they should be configured with --prefix=/usr and we then need to use
make DESTDIR=$(STAGING_DIR) install to get things installed into the
staging directory.  The current situation for many packages, which use
--prefix=$(STAGING_DIR) results in the staging_dir paths getting compiled
into the binary itself.

This also adds in a pile of libtool fixups.  Between broken pkgconfig,
broken libtool handling, and broken --prefix settings, its a wonder
things have worked as well as they have up till now.
 -Erik
2007-01-14 03:52:21 +00:00
Bernhard Reutner-Fischer
c3848942cf - andersee, please use ZCAT / BZCAT as configured by the user.
(see buildroot/Config.in config BR2_ZCAT and BR2_BZCAT that are available as ZCAT and BZCAT). Thanks..
2006-12-13 09:04:58 +00:00
Eric Andersen
28151cf8c7 add dmalloc 2006-12-12 22:16:41 +00:00