Skip to content
New issue

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

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Windows dll .edata Name RVA #127

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

Windows dll .edata Name RVA #127

Keno opened this issue Jul 19, 2012 · 3 comments

Comments

@Keno
Copy link
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).

@xianyi
Copy link
Collaborator

xianyi commented Jul 25, 2012

@zchothia , any suggestion?

Xianyi

@ghost ghost assigned zchothia Jul 25, 2012
@zchothia
Copy link
Contributor

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?

@Keno
Copy link
Contributor Author

Keno commented Jul 30, 2012

Yeah, taking option 2 sounds good to me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants