History

Fixed silly error in Windows build of tests (abitest-cc not linking to libtcc)

I really should do this when less tired; I keep breaking one platform while fixing another. I've also fixed some Windows issues with tcctest since Windows printf() uses different format flags to those on Linux, and removed some conditional compilation tests in tcctest since they now should work.

James Lyon committed 13 years ago

Commit 41d76e11 parent ae2ece92 files · +34 −33Browse files

Unified · Split

2 files
  1. tests/CMakeLists.txt +2 −3
  2. tests/tcctest.c +32 −30
tests/CMakeLists.txt+2−3
@@ -5,13 +5,12 @@ if(WIN32) · 4 unmodified lines
55 set(TCC_CFLAGS ${TCC_CFLAGS} -I${CMAKE_SOURCE_DIR}/win32/include)
66 else()
77 set(TCC_MATH_LDFLAGS -lm)
8+ set(LIBTCC_EXTRA_LIBS dl)
89 set(LIBTCC_LDFLAGS -ldl -lm -Wl,-rpath=${CMAKE_BINARY_DIR})
910 endif()
1011
1112 add_executable(abitest-cc abitest.c)
12−if(NOT WIN32)
13− target_link_libraries(abitest-cc libtcc dl)
14−endif()
13+target_link_libraries(abitest-cc libtcc ${LIBTCC_EXTRA_LIBS})
1514 add_test(NAME abitest-cc WORKING_DIRECTORY ${CMAKE_BINARY_DIR} COMMAND abitest-cc lib_path=${CMAKE_BINARY_DIR} include=${CMAKE_SOURCE_DIR}/include)
1615
1716 set(ABITEST_TCC abitest-tcc${CMAKE_EXECUTABLE_SUFFIX})
tests/tcctest.c+32−30
@@ -16,6 +16,14 @@ · 15 unmodified lines
1616
1717 #endif
1818
19+#if defined(_WIN32)
20+#define LONG_LONG_FORMAT "%lld"
21+#define ULONG_LONG_FORMAT "%llu"
22+#else
23+#define LONG_LONG_FORMAT "%Ld"
24+#define ULONG_LONG_FORMAT "%Lu"
25+#endif
26+
1927 // MinGW has 80-bit rather than 64-bit long double which isn't compatible with TCC or MSVC
2028 #if defined(_WIN32) && defined(__GNUC__)
2129 #define LONG_DOUBLE double
@@ -263,7 +271,7 @@ void macro_test(void) · 241 unmodified lines
263271 printf("func='%s'\n", __FUNCTION__);
264272
265273 /* complicated macros in glibc */
266− printf("INT64_MIN=%Ld\n", INT64_MIN);
274+ printf("INT64_MIN=" LONG_LONG_FORMAT "\n", INT64_MIN);
267275 {
268276 int a;
269277 a = 1;
@@ -1711,19 +1719,19 @@ void lloptest(long long a, long long b) · 1441 unmodified lines
17111719 ua = a;
17121720 ub = b;
17131721 /* arith */
1714− printf("arith: %Ld %Ld %Ld\n",
1722+ printf("arith: " LONG_LONG_FORMAT " " LONG_LONG_FORMAT " " LONG_LONG_FORMAT "\n",
17151723 a + b,
17161724 a - b,
17171725 a * b);
17181726
17191727 if (b != 0) {
1720− printf("arith1: %Ld %Ld\n",
1728+ printf("arith1: " LONG_LONG_FORMAT " " LONG_LONG_FORMAT "\n",
17211729 a / b,
17221730 a % b);
17231731 }
17241732
17251733 /* binary */
1726− printf("bin: %Ld %Ld %Ld\n",
1734+ printf("bin: " LONG_LONG_FORMAT " " LONG_LONG_FORMAT " " LONG_LONG_FORMAT "\n",
17271735 a & b,
17281736 a | b,
17291737 a ^ b);
@@ -1748,25 +1756,25 @@ void lloptest(long long a, long long b) · 18 unmodified lines
17481756 /* arith2 */
17491757 a++;
17501758 b++;
1751− printf("arith2: %Ld %Ld\n", a, b);
1752− printf("arith2: %Ld %Ld\n", a++, b++);
1753− printf("arith2: %Ld %Ld\n", --a, --b);
1754− printf("arith2: %Ld %Ld\n", a, b);
1759+ printf("arith2: " LONG_LONG_FORMAT " " LONG_LONG_FORMAT "\n", a, b);
1760+ printf("arith2: " LONG_LONG_FORMAT " " LONG_LONG_FORMAT "\n", a++, b++);
1761+ printf("arith2: " LONG_LONG_FORMAT " " LONG_LONG_FORMAT "\n", --a, --b);
1762+ printf("arith2: " LONG_LONG_FORMAT " " LONG_LONG_FORMAT "\n", a, b);
17551763 b = ub = 0;
17561764 printf("not: %d %d %d %d\n", !a, !ua, !b, !ub);
17571765 }
17581766
17591767 void llshift(long long a, int b)
17601768 {
1761− printf("shift: %Ld %Ld %Ld\n",
1769+ printf("shift: " LONG_LONG_FORMAT " " LONG_LONG_FORMAT " " LONG_LONG_FORMAT "\n",
17621770 (unsigned long long)a >> b,
17631771 a >> b,
17641772 a << b);
1765− printf("shiftc: %Ld %Ld %Ld\n",
1773+ printf("shiftc: " LONG_LONG_FORMAT " " LONG_LONG_FORMAT " " LONG_LONG_FORMAT "\n",
17661774 (unsigned long long)a >> 3,
17671775 a >> 3,
17681776 a << 3);
1769− printf("shiftc: %Ld %Ld %Ld\n",
1777+ printf("shiftc: " LONG_LONG_FORMAT " " LONG_LONG_FORMAT " " LONG_LONG_FORMAT "\n",
17701778 (unsigned long long)a >> 35,
17711779 a >> 35,
17721780 a << 35);
@@ -1783,7 +1791,7 @@ void llfloat(void) · 10 unmodified lines
17831791 ula = 0x72345678;
17841792 la = (la << 20) | 0x12345;
17851793 ula = ula << 33;
1786− printf("la=%Ld ula=%Lu\n", la, ula);
1794+ printf("la=" LONG_LONG_FORMAT " ula=" ULONG_LONG_FORMAT "\n", la, ula);
17871795
17881796 fa = la;
17891797 da = la;
@@ -1793,7 +1801,7 @@ void llfloat(void) · 3 unmodified lines
17931801 la = fa;
17941802 lb = da;
17951803 lc = lda;
1796− printf("ftoll: %Ld %Ld %Ld\n", la, lb, lc);
1804+ printf("ftoll: " LONG_LONG_FORMAT " " LONG_LONG_FORMAT " " LONG_LONG_FORMAT "\n", la, lb, lc);
17971805
17981806 fa = ula;
17991807 da = ula;
@@ -1803,7 +1811,7 @@ void llfloat(void) · 3 unmodified lines
18031811 ula = fa;
18041812 ulb = da;
18051813 ulc = lda;
1806− printf("ftoull: %Lu %Lu %Lu\n", ula, ulb, ulc);
1814+ printf("ftoull: " ULONG_LONG_FORMAT " " ULONG_LONG_FORMAT " " ULONG_LONG_FORMAT "\n", ula, ulb, ulc);
18071815 }
18081816
18091817 long long llfunc1(int a)
@@ -1832,14 +1840,14 @@ void longlong_test(void) · 22 unmodified lines
18321840 ua = -2;
18331841 a = ia;
18341842 b = ua;
1835− printf("%Ld %Ld\n", a, b);
1836− printf("%Ld %Ld %Ld %Lx\n",
1843+ printf(LONG_LONG_FORMAT " " LONG_LONG_FORMAT "\n", a, b);
1844+ printf(LONG_LONG_FORMAT " " LONG_LONG_FORMAT " " LONG_LONG_FORMAT " %Lx\n",
18371845 (long long)1,
18381846 (long long)-2,
18391847 1LL,
18401848 0x1234567812345679);
18411849 a = llfunc1(-3);
1842− printf("%Ld\n", a);
1850+ printf(LONG_LONG_FORMAT "\n", a);
18431851
18441852 lloptest(1000, 23);
18451853 lloptest(0xff, 0x1234);
@@ -1880,7 +1888,7 @@ void longlong_test(void) · 34 unmodified lines
18801888 b = 4294967295LL;
18811889 printf("%d %d %d %d\n", a > b, a < b, a >= b, a <= b);
18821890
1883− printf("%Ld\n", 0x123456789LLU);
1891+ printf(LONG_LONG_FORMAT "\n", 0x123456789LLU);
18841892 }
18851893
18861894 void manyarg_test(void)
@@ -1891,34 +1899,31 @@ void manyarg_test(void) · 4 unmodified lines
18911899 1, 2, 3, 4, 5, 6, 7, 8,
18921900 0.1, 1.2, 2.3, 3.4, 4.5, 5.6, 6.7, 7.8, 8.9, 9.0);
18931901 printf("%d %d %d %d %d %d %d %d %f %f %f %f %f %f %f %f %f %f "
1894− "%Ld %Ld %f %f\n",
1902+ LONG_LONG_FORMAT " " LONG_LONG_FORMAT " %f %f\n",
18951903 1, 2, 3, 4, 5, 6, 7, 8,
18961904 0.1, 1.2, 2.3, 3.4, 4.5, 5.6, 6.7, 7.8, 8.9, 9.0,
18971905 1234567891234LL, 987654321986LL,
18981906 42.0, 43.0);
18991907 printf("%Lf %d %d %d %d %d %d %d %d %f %f %f %f %f %f %f %f %f %f "
1900− "%Ld %Ld %f %f\n",
1908+ LONG_LONG_FORMAT " " LONG_LONG_FORMAT " %f %f\n",
19011909 ld, 1, 2, 3, 4, 5, 6, 7, 8,
19021910 0.1, 1.2, 2.3, 3.4, 4.5, 5.6, 6.7, 7.8, 8.9, 9.0,
19031911 1234567891234LL, 987654321986LL,
19041912 42.0, 43.0);
1905− /* XXX: known bug of x86-64 */
1906−#ifndef __x86_64__
19071913 printf("%d %d %d %d %d %d %d %d %Lf\n",
19081914 1, 2, 3, 4, 5, 6, 7, 8, ld);
19091915 printf("%d %d %d %d %d %d %d %d %f %f %f %f %f %f %f %f %f %f "
1910− "%Ld %Ld %f %f %Lf\n",
1916+ LONG_LONG_FORMAT " " LONG_LONG_FORMAT "%f %f %Lf\n",
19111917 1, 2, 3, 4, 5, 6, 7, 8,
19121918 0.1, 1.2, 2.3, 3.4, 4.5, 5.6, 6.7, 7.8, 8.9, 9.0,
19131919 1234567891234LL, 987654321986LL,
19141920 42.0, 43.0, ld);
19151921 printf("%d %d %d %d %d %d %d %d %f %f %f %f %f %f %f %f %f %f "
1916− "%Lf %Ld %Ld %f %f %Lf\n",
1922+ "%Lf " LONG_LONG_FORMAT " " LONG_LONG_FORMAT " %f %f %Lf\n",
19171923 1, 2, 3, 4, 5, 6, 7, 8,
19181924 0.1, 1.2, 2.3, 3.4, 4.5, 5.6, 6.7, 7.8, 8.9, 9.0,
19191925 ld, 1234567891234LL, 987654321986LL,
19201926 42.0, 43.0, ld);
1921−#endif
19221927 }
19231928
19241929 void vprintf1(const char *fmt, ...)
@@ -1954,7 +1959,7 @@ void vprintf1(const char *fmt, ...) · 29 unmodified lines
19541959 break;
19551960 case 'l':
19561961 ll = va_arg(ap, long long);
1957− printf("%Ld", ll);
1962+ printf(LONG_LONG_FORMAT, ll);
19581963 break;
19591964 case 'F':
19601965 ld = va_arg(ap, LONG_DOUBLE);
@@ -1999,11 +2004,8 @@ void stdarg_test(void) · 38 unmodified lines
19992004 vprintf1("%f %d %f\n", 1.0, 2, 3.0);
20002005 vprintf1("%l %l %d %f\n", 1234567891234LL, 987654321986LL, 3, 1234.0);
20012006 vprintf1("%F %F %F\n", LONG_DOUBLE_LITERAL(1.2), LONG_DOUBLE_LITERAL(2.3), LONG_DOUBLE_LITERAL(3.4));
2002−#ifdef __x86_64__
2003− /* a bug of x86's TCC */
20042007 vprintf1("%d %f %l %F %d %f %l %F\n",
2005− 1, 1.2, 3L, 4.5L, 6, 7.8, 9L, 0.1L);
2006−#endif
2008+ 1, 1.2, 3LL, LONG_DOUBLE_LITERAL(4.5), 6, 7.8, 9LL, LONG_DOUBLE_LITERAL(0.1));
20072009 vprintf1("%d %d %d %d %d %d %d %d %f %f %f %f %f %f %f %f\n",
20082010 1, 2, 3, 4, 5, 6, 7, 8,
20092011 0.1, 1.2, 2.3, 3.4, 4.5, 5.6, 6.7, 7.8);

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t