javah doesn't generate the right prototypes for stub files
-----------------------------------------------------
src/share/tools/javah/javah.c
The prototypes of the user's native methods are not declared correctly
in the stub files. A mismatch between the prototype and the actual function
could cause problems on some platforms:
Old:
/* Stubs for class java_lang_Object */
/* SYMBOL: "java_lang_Object/getClass()Ljava/lang/Class;",
Java_java_lang_Object_getClass_stub */
stack_item * _Optlink _Export Java_java_lang_Object_getClass_stub(stack_item
*_P_,struct execenv *_EE_) {
extern void* java_lang_Object_getClass(void *);
_P_[0].p = java_lang_Object_getClass(_P_[0].p);
return _P_ + 1;
}
New, with proper prototypes:
/* Stubs for class java_lang_Object */
/* SYMBOL: "java_lang_Object/getClass()Ljava/lang/Class;",
Java_java_lang_Object_getClass_stub */
struct Hjava_lang_Object;
struct Hjava_lang_Class;
stack_item * _Optlink Java_java_lang_Object_getClass_stub(stack_item
*_P_,struct execenv *_EE_) {
extern struct Hjava_lang_Class *java_lang_Object_getClass(struct
Hjava_lang_Object *);
_P_[0].p = java_lang_Object_getClass(_P_[0].p);
return _P_ + 1;
}
-----------------------------------------------------
src/share/tools/javah/javah.c
The prototypes of the user's native methods are not declared correctly
in the stub files. A mismatch between the prototype and the actual function
could cause problems on some platforms:
Old:
/* Stubs for class java_lang_Object */
/* SYMBOL: "java_lang_Object/getClass()Ljava/lang/Class;",
Java_java_lang_Object_getClass_stub */
stack_item * _Optlink _Export Java_java_lang_Object_getClass_stub(stack_item
*_P_,struct execenv *_EE_) {
extern void* java_lang_Object_getClass(void *);
_P_[0].p = java_lang_Object_getClass(_P_[0].p);
return _P_ + 1;
}
New, with proper prototypes:
/* Stubs for class java_lang_Object */
/* SYMBOL: "java_lang_Object/getClass()Ljava/lang/Class;",
Java_java_lang_Object_getClass_stub */
struct Hjava_lang_Object;
struct Hjava_lang_Class;
stack_item * _Optlink Java_java_lang_Object_getClass_stub(stack_item
*_P_,struct execenv *_EE_) {
extern struct Hjava_lang_Class *java_lang_Object_getClass(struct
Hjava_lang_Object *);
_P_[0].p = java_lang_Object_getClass(_P_[0].p);
return _P_ + 1;
}
- duplicates
-
JDK-1240816 fp.bugs 3876 javah generates long return value in stub even if return is short
-
- Closed
-
-
JDK-4233644 javah -old generates illegal code for ANSI/ISO C++
-
- Closed
-