harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Regis <xu.re...@gmail.com>
Subject Re: Problem met when building jdktools alone
Date Tue, 03 Aug 2010 02:24:09 GMT
On 2010-08-02 23:44, Daniel Gong wrote:
> Hi all,
>
> As you know that I'm developing the jdb command line tool. I met a weird
> problem when building jdktools alone.
>
> Briefly, the problem is like this: after I build the jdktools module against
> hdk, each jdk tool command line tool turns out to be segmentation fault when
> running with a simple command such as "java", but succeeds when running with
> a full path such as "$HDK/jdk/bin/java".
>
> According to the component-wise instruction, I get the jdktools code and
> common resources code from svn, the directory structure is like this:
>
> myproject
>      |
>      |--------- jdktools
>      |              |
>      |              |---------- build.xml
>      |              |
>      |              |---------- LICENSE
>      |              |
>      |              |---------- make
>      |              |
>      |              |---------- modules
>      |              |
>      |              |---------- NOTICE
>      |
>      |--------- common resources
>      |              |
>      |              |---------- build.xml
>      |              |
>      |              |---------- depends
>      |              |
>      |              |---------- make
>
> And hdk is in another directory. HDK is also the java runtime that ant use.
>
> I have kept using the full path of jdk tool command to test whether my jdb
> works and tried to find a solution but still do not have one...
>
> Does any one know what happened? Thanks.
>
> Best wishes
> Daniel Gong
>

getExeDir in samsa.c uses realpath to find executable file path, which can't 
handle case of executable file is in $PATH. Reading symbol link "/proc/self/exe" 
can resolve it on linux, you can try following patch. I'm not sure if it works 
on other platforms (AIX, z/OS).

Index: jdktools/modules/samsa/src/main/native/samsa/samsa.c
=====================================================================
--- jdktools/modules/samsa/src/main/native/samsa/samsa.c
+++ jdktools/modules/samsa/src/main/native/samsa/samsa.c
@@ -471,13 +471,14 @@ char *getExeDir(const char* argv0) {

      // FIXME - handle this right - it could be that 512 isn't enough
  #else
+    int length;
      char buffer[PATH_MAX + 1];

-    char *rc = realpath(argv0, buffer);
-    if (!rc) {
-      return NULL;
+    length = readlink("/proc/self/exe", buffer, sizeof(buffer));
+    if (length == -1) {
+        return NULL;
      }
-    buffer[PATH_MAX] = '\0';
+    buffer[length] = '\0';
  #endif

      last = strrchr(buffer, PATH_SEPARATOR_CHAR);



-- 
Best Regards,
Regis.

Mime
View raw message