andreas-abel / uiCA

uops.info Code Analyzer
GNU Affero General Public License v3.0
238 stars 16 forks source link

setup.sh equivalent for Windows #6

Closed rygorous closed 3 years ago

rygorous commented 3 years ago

Also add generated files to .gitignore.

andreas-abel commented 3 years ago

Thanks!

What do you mean by "the parts that break git"? The instructions are supposed to just undo what "git submodule update --init" did, I don't think they break anything.

rygorous commented 3 years ago

I get git fatal error messages about the submodules being in a corrupted state if I delete the .git/modules directory (moving it here to show an easy before/after):

C:\devel\libs\uiCA>move .git\modules .git\modules_
        1 dir(s) moved.

C:\devel\libs\uiCA>git status
fatal: not a git repository: XED-to-XML/../.git/modules/XED-to-XML

C:\devel\libs\uiCA>move .git\modules_ .git\modules
        1 dir(s) moved.

C:\devel\libs\uiCA>git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)
rygorous commented 3 years ago

Separately, I'm not sure why you would undo the submodule init, that just makes the development workflow harder?

(There's another issue where git submodule deinit also fails when run from setup.cmd because instructions.xml ends up with local changes after the build process, at least for me.)

andreas-abel commented 3 years ago

I get git fatal error messages about the submodules being in a corrupted state if I delete the .git/modules directory (moving it here to show an easy before/after):

C:\devel\libs\uiCA>move .git\modules .git\modules_
        1 dir(s) moved.

C:\devel\libs\uiCA>git status
fatal: not a git repository: XED-to-XML/../.git/modules/XED-to-XML

C:\devel\libs\uiCA>move .git\modules_ .git\modules
        1 dir(s) moved.

C:\devel\libs\uiCA>git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)

Do you also get this if you do this after the "git submodule deinit --all"? I only get this error message if I don't do the deinit first.

andreas-abel commented 3 years ago

Separately, I'm not sure why you would undo the submodule init, that just makes the development workflow harder?

These instructions are mostly targeted at people that just want to use the tool and not develop it (which I assume is the majority); they don't need the several thousand files in the submodule any more after xed is built.

(There's another issue where git submodule deinit also fails when run from setup.cmd because instructions.xml ends up with local changes after the build process, at least for me.)

I also get this on Windows. I think it can be solved with deinit -f.

rygorous commented 3 years ago

OK, updated setup.cmd to use deinit -f and also updated README.md with some rough installation instructions. I assume VC++ or similar is required since XED was building C++ code with it, but I had all prerequisites installed already so I'm not actually positive what the exact requirements are.

andreas-abel commented 3 years ago

I assume VC++ or similar is required since XED was building C++ code with it, but I had all prerequisites installed already so I'm not actually positive what the exact requirements are.

Yes, I had to install the MSVC compiler; before that I got an error message when building XED.

andreas-abel commented 3 years ago

Regarding the IACA markers: Actually, IACA 2.1 does use the UD2 bytes. I had not noticed before that this was changed in more recent versions. Thanks for catching that!

I will update the code so that it is consistent with the recent versions.

rygorous commented 3 years ago

I did not remember the IACA 2 markers were different, but if you're changing it anyway, there's yet another different version of the IACA markers for use with 64-bit VC++ which does not support any form of inline ASM but does have the __writegsbyte intrinsic:

IACA_VC64_START which is mov byte ptr gs:[06fh], 06fh (single instruction, byte sequence 65 c6 04 25 6f 00 00 00 6f) IACA_VC64_END which is mov byte ptr gs:[0deh], 0deh (byte sequence 65 c6 04 25 de 00 00 00 de)