Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

Already on GitHub? Sign in to your account

Windows dll .edata Name RVA #127

Closed
Keno opened this Issue Jul 19, 2012 · 3 comments

Comments

Projects
None yet
3 participants
Contributor

Keno commented Jul 19, 2012

When building with MinGW on windows openblas creates both openblas-r0.2.2.dll and also symlinks (which is really a hardlink on windows) to openblas.dll. However, while this maybe a valid thing to do on other platforms, the PE/COFF format contains something called the "Name RVA" in the .edata section. However, this causes the problem that libraries and executables linking directly to openblas.dll cannot find the dll afterwards as they expect it to called openblas-r0.2.2.dll in accordance with the "Name RVA". I am unsure about the correct solution to this, but I see the following possibilities:

  1. Don't generate openblas.dll and use openblas-r0.2.2.dll
  2. Don't generate openblas-r0.2.2.dll and use openblas.dll
  3. Generate both independently of each other with the correct "Name RVA"
  4. Patch openblas.dll to have the correct "Name RVA"

I would prefer to keep openblas.dll so I'm really fine with 2-4, but would tend more towards 3-4, though I am unsure as to the feasibility of 4. Let me know what you think the the best solution is and I can probably implement it (or you could implement it yourself).

Owner

xianyi commented Jul 25, 2012

@zchothia , any suggestion?

Xianyi

@ghost ghost assigned zchothia Jul 25, 2012

Contributor

zchothia commented Jul 29, 2012

Thanks for the pointing this out. I agree with your assessment and would be inclined to take either option 2 or 3. Whilst option 4 is technically possible, I would dissuade from its use due to the added complexity it would bring. Personally I think option 2 is most appropriate, since openblas.dll would be referenced without specifying a particular version. This makes it possible to upgrade between OpenBLAS versions without needing to re-link an application. Does this sound reasonable or would it be preferable to take option 3?

Contributor

Keno commented Jul 30, 2012

Yeah, taking option 2 sounds good to me.

@zchothia zchothia closed this Jul 30, 2012

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment