summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoy.Li <rongqing.li@windriver.com>2012-07-10 17:27:00 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-07-17 10:53:54 +0100
commit6c401a907c16401b524cc7fb21b345eece5fead0 (patch)
treecec4ad2f4a1e1a99fc800478aa0ca54172a93662
parente72157e71c7e3a823d83253f68a9af881e2ab2a0 (diff)
downloadpoky-6c401a907c16401b524cc7fb21b345eece5fead0.tar.gz
slang: change char type to signed char in macros
Fix [YOCTO 2726] C language has 3 distinct char types: char unsigned char signed char A char has the same range of values as signed char on X86, but same as unsigned char on ARM which made Slang's typecast() and array_sort() unable to work for char value on ARM, since Slang is assuming "char" as "signed char". Now we change "char" as "signed char" explicitly in util/mkslarith2.sl, and use it to regenerate src/slarith2.inc (From OE-Core rev: 0a1d842e2db63265a6a6708b1101e1f52f223fc9) Signed-off-by: Roy.Li <rongqing.li@windriver.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/recipes-extended/slang/slang/change-char-type-to-signed-char-in-macros.patch202
-rw-r--r--meta/recipes-extended/slang/slang_2.2.4.bb3
2 files changed, 204 insertions, 1 deletions
diff --git a/meta/recipes-extended/slang/slang/change-char-type-to-signed-char-in-macros.patch b/meta/recipes-extended/slang/slang/change-char-type-to-signed-char-in-macros.patch
new file mode 100644
index 0000000000..18dea139ea
--- /dev/null
+++ b/meta/recipes-extended/slang/slang/change-char-type-to-signed-char-in-macros.patch
@@ -0,0 +1,202 @@
1---
2 src/slarith2.inc | 72 ++++++++++++++++++++++++-------------------------
3 src/util/mkslarith2.sl | 2 -
4 2 files changed, 37 insertions(+), 37 deletions(-)
5
6--- a/src/util/mkslarith2.sl
7+++ b/src/util/mkslarith2.sl
8@@ -1,7 +1,7 @@
9 #!/usr/bin/env slsh
10
11 private variable CTypes =
12- ["char", "unsigned char", "short", "unsigned short", "int", "unsigned int",
13+ ["signed char", "unsigned char", "short", "unsigned short", "int", "unsigned int",
14 "long", "unsigned long", "long long", "unsigned long long",
15 "float", "double", "long double"];
16 private variable Is_Int_Type =
17--- a/src/slarith2.inc
18+++ b/src/slarith2.inc
19@@ -1,43 +1,43 @@
20 /* DO NOT EDIT -- this file was generated by src/util/mkslarith2.sl */
21-/* ------------ char ---------- */
22-DEFUN_1(copy_char_to_char,char,char)
23+/* ------------ signed char ---------- */
24+DEFUN_1(copy_char_to_char,signed char,signed char)
25 #define char_to_char NULL
26 #define copy_char_to_uchar copy_char_to_char
27 #define char_to_uchar NULL
28-DEFUN_1(copy_char_to_short,char,short)
29+DEFUN_1(copy_char_to_short,signed char,short)
30 #define char_to_short NULL
31-DEFUN_1(copy_char_to_ushort,char,unsigned short)
32+DEFUN_1(copy_char_to_ushort,signed char,unsigned short)
33 #define char_to_ushort NULL
34-DEFUN_1(copy_char_to_int,char,int)
35-DEFUN_2(char_to_int,char,int,copy_char_to_int)
36-DEFUN_1(copy_char_to_uint,char,unsigned int)
37-DEFUN_2(char_to_uint,char,unsigned int,copy_char_to_uint)
38-DEFUN_1(copy_char_to_long,char,long)
39-DEFUN_2(char_to_long,char,long,copy_char_to_long)
40-DEFUN_1(copy_char_to_ulong,char,unsigned long)
41-DEFUN_2(char_to_ulong,char,unsigned long,copy_char_to_ulong)
42+DEFUN_1(copy_char_to_int,signed char,int)
43+DEFUN_2(char_to_int,signed char,int,copy_char_to_int)
44+DEFUN_1(copy_char_to_uint,signed char,unsigned int)
45+DEFUN_2(char_to_uint,signed char,unsigned int,copy_char_to_uint)
46+DEFUN_1(copy_char_to_long,signed char,long)
47+DEFUN_2(char_to_long,signed char,long,copy_char_to_long)
48+DEFUN_1(copy_char_to_ulong,signed char,unsigned long)
49+DEFUN_2(char_to_ulong,signed char,unsigned long,copy_char_to_ulong)
50 #if defined(HAVE_LONG_LONG)
51-DEFUN_1(copy_char_to_llong,char,long long)
52-DEFUN_2(char_to_llong,char,long long,copy_char_to_llong)
53+DEFUN_1(copy_char_to_llong,signed char,long long)
54+DEFUN_2(char_to_llong,signed char,long long,copy_char_to_llong)
55 #endif /* defined(HAVE_LONG_LONG) */
56 #if defined(HAVE_LONG_LONG)
57-DEFUN_1(copy_char_to_ullong,char,unsigned long long)
58-DEFUN_2(char_to_ullong,char,unsigned long long,copy_char_to_ullong)
59+DEFUN_1(copy_char_to_ullong,signed char,unsigned long long)
60+DEFUN_2(char_to_ullong,signed char,unsigned long long,copy_char_to_ullong)
61 #endif /* defined(HAVE_LONG_LONG) */
62 #if SLANG_HAS_FLOAT
63-DEFUN_1(copy_char_to_float,char,float)
64-DEFUN_2(char_to_float,char,float,copy_char_to_float)
65+DEFUN_1(copy_char_to_float,signed char,float)
66+DEFUN_2(char_to_float,signed char,float,copy_char_to_float)
67 #endif /* SLANG_HAS_FLOAT */
68 #if SLANG_HAS_FLOAT
69-DEFUN_1(copy_char_to_double,char,double)
70-DEFUN_2(char_to_double,char,double,copy_char_to_double)
71+DEFUN_1(copy_char_to_double,signed char,double)
72+DEFUN_2(char_to_double,signed char,double,copy_char_to_double)
73 #endif /* SLANG_HAS_FLOAT */
74 #if defined(HAVE_LONG_DOUBLE)
75-DEFUN_1(copy_char_to_ldouble,char,long double)
76-DEFUN_2(char_to_ldouble,char,long double,copy_char_to_ldouble)
77+DEFUN_1(copy_char_to_ldouble,signed char,long double)
78+DEFUN_2(char_to_ldouble,signed char,long double,copy_char_to_ldouble)
79 #endif /* defined(HAVE_LONG_DOUBLE) */
80 #if SLANG_HAS_FLOAT
81-TO_DOUBLE_FUN(char_to_one_double,char)
82+TO_DOUBLE_FUN(char_to_one_double,signed char)
83 #endif
84
85 /* ------------ unsigned char ---------- */
86@@ -82,7 +82,7 @@ TO_DOUBLE_FUN(uchar_to_one_double,unsign
87 #endif
88
89 /* ------------ short ---------- */
90-DEFUN_1(copy_short_to_char,short,char)
91+DEFUN_1(copy_short_to_char,short,signed char)
92 #define short_to_char NULL
93 DEFUN_1(copy_short_to_uchar,short,unsigned char)
94 #define short_to_uchar NULL
95@@ -123,7 +123,7 @@ TO_DOUBLE_FUN(short_to_one_double,short)
96 #endif
97
98 /* ------------ unsigned short ---------- */
99-DEFUN_1(copy_ushort_to_char,unsigned short,char)
100+DEFUN_1(copy_ushort_to_char,unsigned short,signed char)
101 #define ushort_to_char NULL
102 DEFUN_1(copy_ushort_to_uchar,unsigned short,unsigned char)
103 #define ushort_to_uchar NULL
104@@ -164,7 +164,7 @@ TO_DOUBLE_FUN(ushort_to_one_double,unsig
105 #endif
106
107 /* ------------ int ---------- */
108-DEFUN_1(copy_int_to_char,int,char)
109+DEFUN_1(copy_int_to_char,int,signed char)
110 #define int_to_char NULL
111 DEFUN_1(copy_int_to_uchar,int,unsigned char)
112 #define int_to_uchar NULL
113@@ -205,7 +205,7 @@ TO_DOUBLE_FUN(int_to_one_double,int)
114 #endif
115
116 /* ------------ unsigned int ---------- */
117-DEFUN_1(copy_uint_to_char,unsigned int,char)
118+DEFUN_1(copy_uint_to_char,unsigned int,signed char)
119 #define uint_to_char NULL
120 DEFUN_1(copy_uint_to_uchar,unsigned int,unsigned char)
121 #define uint_to_uchar NULL
122@@ -246,7 +246,7 @@ TO_DOUBLE_FUN(uint_to_one_double,unsigne
123 #endif
124
125 /* ------------ long ---------- */
126-DEFUN_1(copy_long_to_char,long,char)
127+DEFUN_1(copy_long_to_char,long,signed char)
128 #define long_to_char NULL
129 DEFUN_1(copy_long_to_uchar,long,unsigned char)
130 #define long_to_uchar NULL
131@@ -287,7 +287,7 @@ TO_DOUBLE_FUN(long_to_one_double,long)
132 #endif
133
134 /* ------------ unsigned long ---------- */
135-DEFUN_1(copy_ulong_to_char,unsigned long,char)
136+DEFUN_1(copy_ulong_to_char,unsigned long,signed char)
137 #define ulong_to_char NULL
138 DEFUN_1(copy_ulong_to_uchar,unsigned long,unsigned char)
139 #define ulong_to_uchar NULL
140@@ -329,7 +329,7 @@ TO_DOUBLE_FUN(ulong_to_one_double,unsign
141
142 /* ------------ long long ---------- */
143 #if defined(HAVE_LONG_LONG)
144-DEFUN_1(copy_llong_to_char,long long,char)
145+DEFUN_1(copy_llong_to_char,long long,signed char)
146 #define llong_to_char NULL
147 DEFUN_1(copy_llong_to_uchar,long long,unsigned char)
148 #define llong_to_uchar NULL
149@@ -372,7 +372,7 @@ TO_DOUBLE_FUN(llong_to_one_double,long l
150
151 /* ------------ unsigned long long ---------- */
152 #if defined(HAVE_LONG_LONG)
153-DEFUN_1(copy_ullong_to_char,unsigned long long,char)
154+DEFUN_1(copy_ullong_to_char,unsigned long long,signed char)
155 #define ullong_to_char NULL
156 DEFUN_1(copy_ullong_to_uchar,unsigned long long,unsigned char)
157 #define ullong_to_uchar NULL
158@@ -415,7 +415,7 @@ TO_DOUBLE_FUN(ullong_to_one_double,unsig
159
160 /* ------------ float ---------- */
161 #if SLANG_HAS_FLOAT
162-DEFUN_1(copy_float_to_char,float,char)
163+DEFUN_1(copy_float_to_char,float,signed char)
164 #define float_to_char NULL
165 DEFUN_1(copy_float_to_uchar,float,unsigned char)
166 #define float_to_uchar NULL
167@@ -458,7 +458,7 @@ TO_DOUBLE_FUN(float_to_one_double,float)
168
169 /* ------------ double ---------- */
170 #if SLANG_HAS_FLOAT
171-DEFUN_1(copy_double_to_char,double,char)
172+DEFUN_1(copy_double_to_char,double,signed char)
173 #define double_to_char NULL
174 DEFUN_1(copy_double_to_uchar,double,unsigned char)
175 #define double_to_uchar NULL
176@@ -501,7 +501,7 @@ TO_DOUBLE_FUN(double_to_one_double,doubl
177
178 /* ------------ long double ---------- */
179 #if defined(HAVE_LONG_DOUBLE)
180-DEFUN_1(copy_ldouble_to_char,long double,char)
181+DEFUN_1(copy_ldouble_to_char,long double,signed char)
182 #define ldouble_to_char NULL
183 DEFUN_1(copy_ldouble_to_uchar,long double,unsigned char)
184 #define ldouble_to_uchar NULL
185@@ -545,7 +545,7 @@ TO_DOUBLE_FUN(ldouble_to_one_double,long
186 #if SLANG_HAS_FLOAT
187 static To_Double_Fun_Table_Type To_Double_Fun_Table [MAX_ARITHMETIC_TYPES] =
188 {
189- {sizeof(char), char_to_one_double},
190+ {sizeof(signed char), char_to_one_double},
191 {sizeof(unsigned char), uchar_to_one_double},
192 {sizeof(short), short_to_one_double},
193 {sizeof(unsigned short), ushort_to_one_double},
194@@ -583,7 +583,7 @@ static To_Double_Fun_Table_Type To_Doubl
195
196 static Binary_Matrix_Type Binary_Matrix [MAX_ARITHMETIC_TYPES][MAX_ARITHMETIC_TYPES] =
197 {
198- /* char */
199+ /* signed char */
200 {
201 {(FVOID_STAR)copy_char_to_char, char_to_char},
202 {(FVOID_STAR)copy_char_to_uchar, char_to_uchar},
diff --git a/meta/recipes-extended/slang/slang_2.2.4.bb b/meta/recipes-extended/slang/slang_2.2.4.bb
index f17bc0f597..72dd99fb76 100644
--- a/meta/recipes-extended/slang/slang_2.2.4.bb
+++ b/meta/recipes-extended/slang/slang_2.2.4.bb
@@ -10,7 +10,7 @@ to recode S-Lang procedures in C if you need to."
10HOMEPAGE = "http://www.jedsoft.org/slang/" 10HOMEPAGE = "http://www.jedsoft.org/slang/"
11SECTION = "libs" 11SECTION = "libs"
12DEPENDS = "pcre" 12DEPENDS = "pcre"
13PR = "r8" 13PR = "r9"
14 14
15LICENSE = "GPLv2" 15LICENSE = "GPLv2"
16LIC_FILES_CHKSUM = "file://COPYING;md5=a52a18a472d4f7e45479b06563717c02" 16LIC_FILES_CHKSUM = "file://COPYING;md5=a52a18a472d4f7e45479b06563717c02"
@@ -19,6 +19,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=a52a18a472d4f7e45479b06563717c02"
19SRC_URI = "ftp://space.mit.edu/pub/davis/slang/v2.2/slang-${PV}.tar.bz2 \ 19SRC_URI = "ftp://space.mit.edu/pub/davis/slang/v2.2/slang-${PV}.tar.bz2 \
20 file://rpathfix.patch \ 20 file://rpathfix.patch \
21 " 21 "
22SRC_URI_append_arm = " file://change-char-type-to-signed-char-in-macros.patch"
22 23
23inherit autotools 24inherit autotools
24 25