[Crosstoolchain-logs] [device-tree-compiler] 330/357: Fix dtc bugs for 64-bit compile

Hector Oron zumbi at moszumanska.debian.org
Thu Dec 8 17:06:29 UTC 2016


This is an automated email from the git hooks/post-receive script.

zumbi pushed a commit to branch upstream/1.3.x
in repository device-tree-compiler.

commit b31b271f91b867343fe21a20da4d24b03c1ef421
Author: David Gibson <david at gibson.dropbear.id.au>
Date:   Thu Nov 12 13:30:02 2009 +1100

    Fix dtc bugs for 64-bit compile
    
    I've just tested building dtc as an x86_64 binary on a 32-bit i386
    host by using:
    	make CC="gcc -m64"
    This patch fixes a handful of minor bugs thus discovered:
    
     * There is a printf() type mismatch on 64-bit in value-labels.c
    
     * For the tests which use libdl, we were using the GNU make feature
    where it will find libdl.so given a dependency in the form '-ldl'.
    But this built-in make logic doesn't know we're compiling 64-bit so
    finds the 32-bit version of the library.  We avoid using this and
    instead explicitly pass -ldl to CC, which being the 64-bit version
    does know where to look.
    
     * To process dtc's asm output into .so files, run_tests.sh was
    directly invoking the (default instance of) the assembler and linker.
    Instead invoke these via the CC driver, and allow that to be overriden
    from the make environment.
    
     * The x86_64 assembler doesn't 0 fill with the .balign directive
    (presumably it is NOP filling).  That doesn't produce strictly
    incorrect trees, but it is confusing and confounds are testcases which
    do byte-by-byte comparison of the trees produced by asm output with
    direct dtb output (which does 0 pad where necessary, of course).  This
    patch uses the optional second argument to .balign to force gas to
    zero-fill instead.
    
    Signed-off-by: David Gibson <david at gibson.dropbear.id.au>
---
 flattree.c           | 2 +-
 tests/Makefile.tests | 4 +++-
 tests/run_tests.sh   | 7 +++++--
 tests/value-labels.c | 4 ++--
 4 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/flattree.c b/flattree.c
index 0ff8c45..3eb0201 100644
--- a/flattree.c
+++ b/flattree.c
@@ -166,7 +166,7 @@ static void asm_emit_align(void *e, int a)
 {
 	FILE *f = e;
 
-	fprintf(f, "\t.balign\t%d\n", a);
+	fprintf(f, "\t.balign\t%d, 0\n", a);
 }
 
 static void asm_emit_data(void *e, struct data d)
diff --git a/tests/Makefile.tests b/tests/Makefile.tests
index e35afa6..2696581 100644
--- a/tests/Makefile.tests
+++ b/tests/Makefile.tests
@@ -41,7 +41,9 @@ tests:	$(TESTS) $(TESTS_TREES)
 
 $(LIB_TESTS): %: $(TESTS_PREFIX)testutils.o $(LIBFDT_archive)
 
-$(DL_LIB_TESTS): %: $(TESTS_PREFIX)testutils.o $(LIBFDT_archive) -ldl
+$(DL_LIB_TESTS): %: %.o $(TESTS_PREFIX)testutils.o $(LIBFDT_archive)
+	@$(VECHO) LD [libdl] $@
+	$(LINK.c) -o $@ $^ -ldl
 
 $(LIBTREE_TESTS): %: $(TESTS_PREFIX)testutils.o $(TESTS_PREFIX)trees.o $(LIBFDT_archive)
 
diff --git a/tests/run_tests.sh b/tests/run_tests.sh
index db413a1..5d901c2 100755
--- a/tests/run_tests.sh
+++ b/tests/run_tests.sh
@@ -2,6 +2,10 @@
 
 . ./tests.sh
 
+if [ -z "$CC" ]; then
+    CC=gcc
+fi
+
 export QUIET_TEST=1
 
 export VALGRIND=
@@ -72,8 +76,7 @@ run_dtc_test () {
 }
 
 asm_to_so () {
-    as -o $1.test.o data.S $1.test.s && \
-	ld -shared -o $1.test.so $1.test.o
+    $CC -shared -o $1.test.so data.S $1.test.s
 }
 
 asm_to_so_test () {
diff --git a/tests/value-labels.c b/tests/value-labels.c
index d11c34e..c5aea8f 100644
--- a/tests/value-labels.c
+++ b/tests/value-labels.c
@@ -89,9 +89,9 @@ void check_prop_labels(void *sohandle, void *fdt, const char *name,
 			FAIL("Couldn't locate label symbol \"%s\"", name);
 
 		if ((p - prop->data) != off)
-			FAIL("Label \"%s\" points to offset %d instead of %d"
+			FAIL("Label \"%s\" points to offset %ld instead of %d"
 			     "in property \"%s\"", labels[i].labelname,
-			     p - prop->data, off, name);
+			     (long)(p - prop->data), off, name);
 	}
 }
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/crosstoolchain/device-tree-compiler.git



More information about the Crosstoolchain-logs mailing list